1187: 영어 [字符串]
时间限制: 1 Sec 内存限制: 128 MB提交: 894 解决: 280 统计
题目描述
你们猜猜영어是什么意思?
??????????????????????
"English is very importan!",诸如此类的声音不停的在Ocean的耳边出现。
现在Ocean为了自己的小小梦想开始了英语的复习之路,但是他碰到一个小问题,需要你来帮助他。
如:字符串"EnglishEnglish"包含了 2 个"English"子串。
PS:子串是指连续的一段字符串,题目要求的合法子串必须是不重叠的。
本题大家请使用scanf("%s", str);输入。
输入
第一行输入一个整数
,代表有
组测试数据。
每组数据输入一个字符串
。
注: 1<=T<=100,1<=|str|<=10000。
,代表有
组测试数据。
每组数据输入一个字符串
。
注: 1<=T<=100,1<=|str|<=10000。
输出
对每组测试数据,输出一个整数代表
里面一共包含了多少个"English"子串。
里面一共包含了多少个"English"子串。
样例输入
3
EnglishEnglish
EnglishEnglisp
EnglishEnglisH
样例输出
2
1
1
解析:
从第一个‘E’ 开始统计 看是否连续出现'English'子串。
程序如下:
#include<cstdio> #include<cstring> int main() { int N; scanf("%d\n",&N); while(N--) { char str[10003]; int sum=0; scanf("%s",str); char str1[8]="English"; int len=strlen(str); for(int i=0; i<len; i++) { int flag=0; int temp=0; if(str[i]=='E') { temp=0; for(int j=i; j<i+7; j++) { if(str[j]!=str1[temp++]) { flag=1; break; } } if(flag==0) { sum++; i+=6; } } } printf("%d\n",sum); } return 0; }