字串问题。杭电1449

题目描述

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

输入

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

输出

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


  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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值