B - 영어(字符串)


原题链接

 

B - 영어
Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%lld & %llu

Description

你们猜猜영어是什么意思?

??????????????????????

"English is very importan!",诸如此类的声音不停的在Ocean的耳边出现。

现在Ocean为了自己的小小梦想开始了英语的复习之路,但是他碰到一个小问题,需要你来帮助他。

 

Ocean有一个只包含小写字母('a'-'z')和大写字母('A'-'Z')的字符串strstr,他想知道strstr里面一共包含了多少个"English"子串。 
如:字符串"EnglishEnglish"包含了22个"English"子串。 

PS:子串是指连续的一段字符串,题目要求的合法子串必须是不重叠的。

本题大家请使用scanf("%s", str);输入。

Input

第一行输入一个整数TT,代表有TT组测试数据。 
每组数据输入一个字符串strstr。 

注:1<=T<=1001<=|str|<=100001<=T<=100,1<=|str|<=10000。 

Output

对每组测试数据,输出一个整数代表strstr里面一共包含了多少个"English"子串。

Sample Input

3
EnglishEnglish
EnglishEnglisp
EnglishEnglisH

Sample Output

2
1
1

Hint

 
 一道关于字符串的题,这方面掌握的不是太好。

 

 1 #include<cstdio>  
 2 #include<cstring>  
 3 int main()  
 4 {  
 5     int t;  
 6     char s[10005],f[8]="English";  //用数组存放字符串
 7     scanf("%d",&t);  
 8     while(t--)  
 9     {  
10         scanf("%s",s);  
11         int len=strlen(s);  
12         int k,n=0;  
13         for(int i=0;i<len;i++)  
14         {  
15             k=0;  
16             if(s[i]=='E')  
17             {  
18                 k++;  
19                 for(int j=i+1;j<i+7;j++)//两个for循环解决问题
20                 {  
21                     if(s[j]==f[k])  
22                         k++;  
23                     if(k==7)  
24                     {  
25                         n++;  
26                         k=0;  
27                         break;    
28                     }         
29                 }  
30             }  
31                   
32               
33               
34         }  
35         printf("%d\n",n);  
36     }  
37 }

 

posted @ 2017-08-22 09:11  Veritas_des_Liberty  阅读(192)  评论(0编辑  收藏  举报