题目描述
给定一个字符串(模式串)和一些待查找的字符串,求每个待查找字符串在模式串中出现的次数(可重叠)
输入
第一行输入t,表示有t组测试数据
每一组测试数据包含多行:
每一组的第一行包括一个字符串P,长度不超过105,且非空串
每一组的第二行包括一个整数N,代表待查找的字符串数量 (1 <= N <= 5)
每一组接下来的N行,每一行包括一个待查找的字符串,其长度不超过50,且非空串
输出
对于每组测试数据,
输出每个待查找字符串出现的次数,
具体输出见样例
输入样例
2
aabbcc
3
aa
bb
cc
ababab
1
aba
输出样例
aa:1
bb:1
cc:1
aba:2
代码
#include <iostream>
#include <string>
using namespace std;
int main() {
int t, n;
cin >> t;
string s,p;
while (t--) {
cin >> s;
cin >> n;
while (n--)
{
cin>>p;
int num=0;
int sl=s.length();
int pl=p.length();
for(int i=0;i+pl<=sl;i++){
string temp=s.substr(i,pl);
if(temp==p) num++;
}
cout<<p<<":"<<num<<endl;
}
}
return 0;
}