题目链接
思路
有两个思路
第一用字符串的函数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;
}