字串问题。杭电1449

来源:互联网 发布:淘宝买三角梅哪家好 编辑:程序博客网 时间:2024/06/05 10:11

题目描述

      对于一个字符串变量,例如"abcdefghijkl",它的子串就是像"cdefg"这样可以从中找到的连续的字符串。给定一个字符串和它的一个子串,求出这个子串在原串中不重叠得出现了几次。例如:原串为:aaaa 子串为:aa。那么子串在原串中出现了两次。

输入

输入数据的第一行为一个整数 T(0 < T < 20)
接下来 T 行每行为两个空格分隔的字符串,分别代表原串和子串(原串长度不超过100,子串长度不超过10)。

输出

对于每组测试数据,按照题目描述输出对应的结果。


view plaincopyprint如果您复制代码时出现行号,请点击左边的“view plain”后再复制
  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include <string.h>  
  4. int main()  
  5. {  
  6.     int m, n, i, j, lenth1, lenth2;  
  7.     int flag, count;//flag 为标记变量, count 为计数变量  
  8.     char str1[100],str2[10];  
  9.     scanf("%d",&n);  
  10.     for(m=0;m<n;m++)  
  11.     {  
  12.         scanf("%s  %s", str1, str2);  
  13.         lenth1=strlen(str1);  
  14.         lenth2=strlen(str2);  
  15.         count=0;  
  16.         for(i = 0; i < lenth1; i++)  
  17.             {  
  18.                 if(str2[0]==str1[i])  
  19.                {  
  20.                 i++;  
  21.                 flag=0;  
  22.                 j=1;  
  23.                 while(j<lenth2)  
  24.                     //{  
  25.                         if(str2[j++]!=str1[i++])  
  26.                         {  
  27.                             flag=1;  
  28.                             i--;              //去掉这个地方也能ac但结果错误
  29.                         }  
  30.                     //}  
  31.                 if(flag==0)  
  32.                     count++;  
  33.                 i--;  
  34.                }  
  35.             }  
  36.         printf("%d\n",count);  
  37.     }  
  38.     return 0;  
  39. }  
  40.    
  41.   


这个题目很神奇。。。代码中的地方可以试试。。。


0 0
原创粉丝点击