今年六月有8个ACMERS 毕业,他们是:
?littleken","knuthocean","dongfangxu","zap","kittig","robertcui","forest","flirly"。
他们决定在毕业去腐败一下,但谁都不愿出钱去BG他人,因而forest想了一个办法,让电脑生成一个仅由他们名字组成的字符串,看
谁的名字在字符串中出现的次数最多,谁的名字出现的次数最多,那么他就得BG其他人,但是因为字符串长度大长了,他们懒得去数,
就把这个任务交给你,谁叫你是他们的师弟呢!作为ACMER,你编一个程序去求解。

输入格式

首先是一个整数T(T<=50)表示这组数据中有T个CASE,接下来有T行,每行是一个CASE,一个如上描述字符串S。 S的长度小于1000000。

输出格式

输出一个在字符串中出现次数最多的名字。如果存在多个名字出现的次数一样多,则输出第一个,顺序见描述。

样例输入

1
zap

样例输出

zap


第一次做的时候有个名字打错了一个字母,被坑了一次,这种简单题一定要细心哦!

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
	int t,i,max,maxi,len;
	int count[10];
	char s[1000010];
	scanf("%d",&t);
	while(t-->0){
		i=0;
		memset(count,0,sizeof(count));
		scanf("%s",&s);
		len=strlen(s);//必须暂存字符串长度,否则直接用会超时 
		while(i<len){
			switch(s[i]){
				case 'l':i=i+9;count[0]++;break;
				case 'k':i++;//k开头有两种情况 
						 if(s[i]=='i'){
						 	i=i+5;//k已经被扫过了,长度-1 
						 	count[4]++;
						 }
						 else{
						 	i=i+9;
							count[1]++;	
						 }break;
				case 'd':i=i+10;count[2]++;	break;
				case 'z':i=i+3;count[3]++;	break;
				case 'r':i=i+9;count[5]++;break;
				case 'f':i++;//同k的情况 
				if(s[i]=='o'){
					i=i+5;
					count[6]++;
				}
				else{
					count[7]++;
					i=i+5; 
				} break;
			}
		}
		max=0;maxi=0;
		for(i=0;i<8;i++){//找出现次数最多的名字 
			if(count[i]>max){
				max=count[i];
				maxi=i;
			}
		}
		switch(maxi){
			case 0:printf("littleken");break; 
			case 1:printf("knuthocean");break; 
			case 2:printf("dongfangxu");break; 
			case 3:printf("zap");break; 
			case 4:printf("kittig");break; 
			case 5:printf("robertcui");break; 
			case 6:printf("forest");break; 
			case 7:printf("flirly");break; 
		}
		printf("\n");
	}
	return 0;
}


#include<stdio.h>  
#include<iostream>  
#include<string>  
using namespace std;  
  
  
int main(){  
    char* ss[8] = {"littleken", "knuthocean", "dongfangxu", "zap", "kittig", "robertcui", "forest", "flirly" };  
    char s1[8] = { 'l', 'k', 'd', 'z', 'k', 'r', 'f', 'f' };  
    char s2[8] = { 'i', 'n', 'o', 'a', 'i', 'o', 'o','l' };  
    int next[8] = { 9, 10, 10, 3, 6, 9, 6, 6 };  
    int k;  
    cin >> k;  
    for (int h = 0; h < k; h++){  
        string t;  
        cin >> t;  
        int max = 0;  
        int flag = 0;  
        int ans[8] = { 0 };  
  
  
        for (string::iterator it = t.begin(); it != t.end();){  
            for (int i = 0; i < 8; i++){  
                if (*it == s1[i] && *(it + 1) == s2[i]){  
                    it += next[i];  
                    ans[i]++;  
                    break;  
                }  
            }  
        }  
  
        for (int i = 0; i < 8; i++){  
            if (max < ans[i])  
            {  
                max = ans[i];  
                flag = i;  
            }  
        }  
        printf("%s\n", ss[flag]);  
    }  
}