解题思路
这道题目我们根据题意模拟,每次使用 getline
读入的时候使用一个字符串存储不是空格的字符,顺便统计一下空格的数量即可。
题目坑点
这道题不要混合使用字符串的查找函数,因为会超时(别以为想到了别人想不到的方法),不信我们可以分析一下。首先 ,而查找函数是 的,getline
也是 的,加起来就是 ,然后还有各种 的结构,加起来最坏时间就已经超过 秒了。
这道题目主要是为了让大家在数据很大的时候学会关流,以此提高程序运行速度。
例如:
int main() {
ios::sync_with_stdio(false); //用了这个就不要再使用 printf 、 scanf 和 puts 了,因为会产生一些错误。
cin.tie(0), cout.tie(0);
int n;
cin >> n;
string b;
getline(cin, b);
for (int i = 1; i <= n; i++) {
getline(cin, a[i]);
string b = "";
for (int j = 0; j < a[i].size(); j++) {
if (a[i][j] != ' ') {
b += a[i][j];
} else
k++;
}
a[i] = b;
}
}
需要注意的是在有字符串操作时,要么使用快读快写,要么使用关流,如果都使用会让你调很久的代码。