這道題的意思是給2個字符串a和b,計算a在b中出現的次數。
比如:
111
11101111011
111就在字符串中出現了3次,在b中出現的3次的下標分別爲0,1,2;4,5,6;5,6,7;
用常規的字符串匹配算法就能解決。
#include <iostream>
#include <string>
using namespace std;
int cut_string(string a,string b);
int main()
{
string a, b;
int i;
cin >> i;
while (i--)
{
int sum;
cin >> a >> b;
sum = cut_string(a,b);
cout << sum << endl;
}
return 0;
}
int cut_string(string a, string b)
{
int i = 0;
int sum = 0;
int j = 0;
while (i < b.size() && j < a.size() )
{
if (b[i] == a[j])
{
if (j == a.size() - 1)
{
i = i - j + 1;
j = 0;
sum++;
}
else
{
i++;
j++;
}
}
else
{
i = i - j + 1;
j = 0;
}
}
return sum;
}