P8835 题解
RainRecall · · 题解
P8835 题解
让我们看看这题,然后我们敏锐的察觉到这里有一个“相同字符不区分大小写”,那好我们先转换:
string b_sm(string s){//大写转小写,反过来也可以
int l=s.size();
for(int i=0;i<l;i++){
if(s[i]>='A'&&s[i]<='Z')s[i]+=32;//如果是大写字母就转换为小写
}
return s;//返回处理好的字符串
}
接下来是最关键的判断子串了,接下来给大家介绍一个函数:
s.substr(start,num);
这个函数的作用是从
那么附上完整代码:
#include<iostream>
using namespace std;
int t,n,m,ans;
string b_sm(string s){//刚才的函数
int l=s.size();
for(int i=0;i<l;i++){
if(s[i]>='A'&&s[i]<='Z')s[i]+=32;
}
return s;
}
string s1,s2;//题目中的A和B
int main(){
cin>>t;
while(t--){
ans=0;
cin>>n>>m>>s1>>s2;//输入
s1=b_sm(s1);s2=b_sm(s2);
int l2=s2.size(),l1=s1.size();
for(int i=0;i<l2;i++){
if(s2.substr(i,l1)==s1)ans++;//截取,如果是就把答案增加
}
cout<<ans<<endl;//输出答案
}
return 0;
}