WOJ1098-Dongfangxu&zap

来源:互联网 发布:李德毅 知乎 编辑:程序博客网 时间:2024/05/20 09:06

dongfangxu 和zap 是二个好朋友,二个人有变态的嗜好,就是玩字符串。在一连串乱七八糟的字符串中找出自已名字连续出现最多的次数,谁的次数出现得多,则在另一个人脸上贴一张纸条。他们需要一个裁判来帮他们,同时他们约定。如果二个人名字出现的连续的次数一样多,则dongfangxu胜利。裁判一看字符串,天哪。什么乱七八糟的,数都不好数,因此他向你求助。 

输入格式

首先是一个整数T(T<=50),接下来是T行,每行有一个字符串S,S的长度小于100000。

输出格式

求在字符串中输出连续出现次数最多的名字,如果二个连续出现的最多的次数是一样多,比如dongfangxudongfangxuzapzapdongfangxu,在这里面,dongfangxu和zap连续出现最多的次数都是2次,则输出dongfangxu!。在名字后面加一个!

样例输入

1dongfaxuzapzap

样例输出

zap!

#include<stdio.h>#include<string.h>int count(char line[],char key[]){    int lenl,lenk,i,j,count=0,max=0;    lenl=strlen(line);    lenk=strlen(key);    for (i = 0; i < lenl; i++) { //判断line的第i个字符开始         for (j = 0; j < lenk; j++) { //是否有连续lenk个字符与key相同             if (line[i + j] != key[j])             {                 count=0;                 break;             }         }         if (j == lenk) { //如果有,说明匹配到了             i += lenk - 1; //之所以要 -1 ,是因为后面还会有个 i++             count++;         }         if(max<count) max=count;     }     return max; } int main(){    int t,i,j;    scanf("%d",&t);    while(t--)    {        char a[100000];        char d[]="dongfangxu";        char z[]="zap";        int maxd=0,maxz =0;//连续出现的字符串长度        scanf("%s",a);        maxd=count(a,d);        maxz=count(a,z);        if(maxd>=maxz)        printf("dongfangxu!\n");        else        printf("zap!\n");        }    return 0;} 


原创粉丝点击