CCF 201409-3 字符串匹配

#include<bits/stdc++.h>
using namespace std;
string eple[101];
int main() {
    string src;
    cin >> src;
    int open = 0 , n = 0;
    cin >> open >> n;
    for(int i = 0 ; i < n ; i++) {
        cin >> eple[i];
    }
    if(open == 0) { //大小写不敏感
        string src_low;
        transform(src.begin(),src.end(),back_inserter(src_low),::tolower);
        for(int i = 0 ; i < n ; i++) {
            string eple_low;
            transform(eple[i].begin(),eple[i].end(),back_inserter(eple_low),::tolower);
            if(eple_low.find(src_low) != string::npos) {
                cout << eple[i] <<"\n";
            }
        }
    } else {
        for(int i = 0 ; i < n ; i++) {
            if(eple[i].find(src) != string::npos) {
                cout << eple[i] <<"\n";
            }
        }
    }


}

改题目思路很好想,我的想法就是:

1.如果是大小写不敏感的时候,将所有的字符串都先改成小写,在进行判断

2.如果大小写敏感的时候就直接判断。

如果用C++的STL就很好写出来了呀!!

关键点有:

1.C++没有直接转大小写的函数,通过transform进行的转换。(记忆)

2.判断是否找到字符串的写法,也就是find方法返回的值。没有找到的时候返回的是string::npos

然后就可以AC了

posted @ 2022-03-19 14:38  夏莱发电厂的Sensei  阅读(53)  评论(0)    收藏  举报