【第50题】[NOIP2011 普及组] 统计单词数,大佬们的做法我还没学会呢

2023-08-31 14:50:41 浏览数 (1)

题目:[NOIP2011 普及组] 统计单词数

题目原文请移步下面的链接

  • https://www.luogu.com.cn/problem/P1308
    • 参考题解:https://www.luogu.com.cn/problem/solution/P1308
  • 标签:OI模拟字符串
思路
  • 整行输入后先统一字母大小写(好久以前写的代码了,所以方法蛮土的,也可以用函数,不用非得通过ascll码)
  • 然后分割字符串,使每个单词独立,并存储每个单词
  • 接着走循环然后找有没有目标单词,最后输出就ok啦
AC代码
代码语言:javascript复制
#include <bits/stdc  .h>

using namespace std;
#define endl 'n';

void split(string &s, char a, vector<string> &vs) {
    stringstream ss(s);
    string item;

    while (getline(ss, item, a)) {
        vs.push_back(item);
    }
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    string s;
    cin >> s;
    string str;
    getline(cin, str);
    int ans = 0;
    int cnt = -1;
    vector<string> vs;
    getline(cin, str);
    for(int i = 0; i < s.size(); i  ) {
        if ( s[i] <= 'Z' && s[i] >= 'A') {
            s[i]  = 32;
        }
    }
    for(int i = 0; i < str.size(); i  ) {
        if ( str[i] <= 'Z' && str[i] >= 'A') {
            str[i]  = 32;
        }
    }
    split(str, ' ', vs);
    for (int i = 0; i < vs.size();   i) {
        if (vs[i] == s) {
            ans  ;
        }
        if (ans == 0) {
            cnt  = vs[i].size()   1;
        } else if (ans == 1 && i == 0) {
            cnt = 0;
        }
    }
    if (ans == 0) {
        cout << -1;
    } else if (cnt == 0) {
        cout << ans << " " << cnt;
    } else {
        cout << ans << " " << cnt   1;
    }
    return 0;
}

0 人点赞