string.size()问题造成三个点RE
查看原帖
string.size()问题造成三个点RE
247951
ctxy楼主2020/6/3 16:04

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;
}



2020/6/3 16:04
加载中...