在传智的开发课堂上,希望您开发一款文档处理软件。
给定 T 组询问,每次给定 2 个长度为 n,m 的只含英文字母的字符串 a,b,求 a 在 b 中的出现次数,相同字符不区分大小写。注意 a 是 b 中连续子序列。
对于所有数据,T≤100,∑n≤∑m≤103。字符串仅由大小或者小写的英文字母组成。
输入格式
输入共3T+1 行。
第 1 行输入 1 个正整数T。
接下来共 T 组输入,每组输入共 3 行。
第 1 行输入 2 个正整数n,m。
第 2 行输入一个长度为 n 的字符串 a。
第 3 行输入一个长度为 m 的字符串b。
输出格式
输出共 T 行,第 i 行输出 1 个整数,表示询问 i 的答案。
输入输出样例
输入 #1复制
5 3 10 abc abcabcabca 2 10 aa AAaAaaAaAa 5 5 AbCdE eDcBa 5 5 abcde ABCDE 3 10 aba ABaBaAbaBA输出 #1复制
3 9 0 1 4
#include <iostream>
#include <string>
using namespace std;
string bsm(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;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
int m,n,ans=0;
string a,b;
scanf("%d%d",&m,&n);
cin>>a>>b;
a= bsm(a),b= bsm(b);
for(int i=0;i<b.size();i++){
if(b.substr(i,a.size())==a){
ans++;
}
}
printf("%d\n",ans);
}
}