英文题 用谷歌翻译了下
二进制字符串匹配
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
3
-
描述
-
给定两个字符串A和B,其字母只包含“0”和“1”。你的任务只是告诉A出现多少次B的子串?例如,文本字符串B为'1001110110',而模式字符串A为'11',则应输出3,因为模式A出现在
-
输入
- 第一行仅包含一个整数N,表示N个情况。在每种情况下,有两行,第一行给出字符串A,长度(A)<= 10,第二行给出字符串B,长度(B)<= 1000.保证B始终为长于A. 输出
- 对于每种情况,输出一行包含一个整数,表示B出现多少次为A的子字符串。 样例输入
-
3 11 1001110110 101 110010010010001 1010 110100010101011
样例输出
-
3 0 3
数据比较普通 用两个循环就能AC
#include<stdio.h>
#include<string.h>
int main() {
char a[11], b[1001];
int n;
scanf("%d", &n);
while(n--) {
int count = 0;
scanf("%s%s", a, b);
for(int i = 0; i < strlen(b); i++) {
int temp = 1;
for(int j = 0; j < strlen(a); j++)
if(b[i+j] != a[j]) temp = 0;
if(temp) count++;
}
printf("%d\n", count);
}
}