题目描述
对于一个字符串变量,例如"abcdefghijkl",它的子串就是像"cdefg"这样可以从中找到的连续的字符串。给定一个字符串和它的一个子串,求出这个子串在原串中不重叠得出现了几次。例如:原串为:aaaa 子串为:aa。那么子串在原串中出现了两次。
输入
输入数据的第一行为一个整数 T(0 < T < 20)
接下来 T 行每行为两个空格分隔的字符串,分别代表原串和子串(原串长度不超过100,子串长度不超过10)。
输出
对于每组测试数据,按照题目描述输出对应的结果。
示例输入
2 aaaa aa apapapapapapa pa
示例输出
2 6
View Code
1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 char str1[110] , str2[20] ; 6 int i, j, count, t, len ; 7 scanf("%d", &t) ; 8 getchar() ; 9 while(t--) 10 { 11 scanf("%s %s", str1, str2) ; 12 count = 0 ; 13 len = strlen(str2) ; 14 for(i=0; str1[i]; i++) 15 { 16 if(str1[i]==str2[0]) 17 { 18 for(j=0; j<len; j++) 19 { 20 if(str1[i+j]!=str2[j]) 21 break ; 22 } 23 if(j>=len) 24 { 25 count++ ; 26 i = i + len - 1 ; 27 } 28 29 } 30 } 31 printf("%d\n", count) ; 32 } 33 return 0 ; 34 35 }
参考借鉴他人的