CCF认证 201409-3字符串匹配

题目链接

CCF认证 201409-3字符串匹配

思路

有两个思路
第一用字符串的函数find,查找是否包含字符串。
如果大小写不敏感的话,就都转为小写再判断。
第二就是利用正则表达式

代码

代码一,使用string

#include <bits/stdc++.h>
using namespace std;

int main(){
    string str;
    cin>>str;
    int type,n;
    scanf("%d%d",&type,&n);
    //1时大小写敏感
    for(int i=0;i<n;i++){
        string tmp;
        cin>>tmp;
        if(type==1){
            //大小写敏感 
            if(tmp.find(str) != string::npos){
                cout<<tmp<<endl;
            }           
        }else{
            string s2 = str;
            string t = tmp;//保存副本
            //全部转为小写 
            transform(s2.begin(),s2.end(),s2.begin(),::tolower); 
            transform(t.begin(),t.end(),t.begin(),::tolower);
            if(t.find(s2) != string::npos){
                cout<<tmp<<endl;
            } 
        }
    } 
    return 0;
}

代码二,使用正则表达式

#include <bits/stdc++.h>
using namespace std;

int main(){
    string s;
    cin>>s;
    int type,n;
    scanf("%d%d",&type,&n);
    getchar();//吃掉换行符 
    regex r("[[:alpha:]]*"+s+"[[:alpha:]]*");
    if(type == 0){
        r = regex("[[:alpha:]]*"+s+"[[:alpha:]]*",regex::icase);//忽略大小写 
    }
    while(n--){
        getline(cin,s);
        if(regex_match(s,r)){//匹配成功,则输出 
            puts(s.c_str());//输出 
        }
    } 
    return 0; 
}

Add a Comment

邮箱地址不会被公开。