描述
Given two strings A and B, whose alphabet consist only ‘0’ and ‘1’. Your task is only to tell how many times does A appear as a substring of B? For example, the text string B is ‘1001110110’ while the pattern string A is ‘11’, you should output 3, because the pattern A appeared at the posit
输入
The first line consist only one integer N, indicates N cases follows. In each case, there are two lines, the first line gives the string A, length (A) <= 10, and the second line gives the string B, length (B) <= 1000. And it is guaranteed that B is always longer than A.
输出
For each case, output a single line consist a single integer, tells how many times do B appears as a substring of A.
样例输入
3
11
1001110110
101
110010010010001
1010
110100010101011
样例输出
3
0
3
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main(int argc, char const *argv[]) {
int N;
scanf("%d",&N);
while (N--) {
//存储 小字符串
char ch[10000];
//存储 大字符串
string str;
int sum = 0;//记录所含次数
cin >> ch;
cin >> str;
//小字符串长度
int l = strlen(ch);
//当str非空情况下
while(!str.empty()){
//返回大字符串第一个元素的迭代器
string::iterator ite = str.begin();
//w 用于标志
int w = 0;
//循环小字符串
for(int i = 0;i < l;i++){
// 当不等于时标志 且删除第一个字符串
if(ch[i] != *ite){
w = 1;//标志
str.erase(str.begin());
break;
}
ite++;
}
//标志匹配时 匹配规模 +1 删除第一个字符串
if(w == 0){
sum++;
str.erase(str.begin());
}
}
printf("%d\n",sum);
}
return 0;
}