for循环当中,如果使用
for (int i = 0; i < s.size() - 2; i++)
就RE最后三个点 如果
int len = s.size();
for (int i = 0; i < s.size() - 2; i++)
就AC。 为啥呢?size似乎在执行过程中没有变过
#include <iostream>
#include <vector>
using namespace std;
int n;
vector<string> vec;
int count(string s){
int cnt = 0;
int len = s.size();
for (int i = 0; i < s.size() - 2; i++) {
//这里 s.size() - 2 改为 len - 2 就可以AC
if (s[i] == 's' && s[i + 1] == 'o' && s[i + 2] == 's') {
cnt++;
i++;
}
}
return cnt;
}
int main() {
cin >> n;
string name;
int maxlen = -1;
string sig;
for (int i = 1; i <= n; i++) {
cin >> name >> sig;
int len = count(sig);
if (len > maxlen) {
vec.clear();
vec.push_back(name);
maxlen = len;
}else if(len == maxlen){
vec.push_back(name);
}
}
for (int i = 0; i < vec.size(); i++) {
cout << vec[i] << ' ';
}
cout << endl << maxlen;
return 0;
}