扫描整个字符串一次O(n)。
import java.util.*;
public class Forest {
private static void Match(String s){
String[] ss={"littleken","knuthocean","dongfangxu","zap","kittig","robertcui","forest","flirly"};
String[] str={"li","kn","do","za","ki","ro","fo","fl"};
int[] strlen={9,10,10,3,6,9,6,6};
int[] a=new int[8];
for(int i=0;i<s.length()-1;){
for(int j=0;j<8;j++){
if(s.charAt(i)==str[j].charAt(0)&&s.charAt(i+1)==str[j].charAt(1)){
a[j]++;
i=i+strlen[j];
break;
}
}
}
int max=0;
int bg=0;
for(int i=0;i<8;i++)
if(max<a[i]){
max=a[i];
bg=i;
}
System.out.println(ss[bg]);
}
public static void main(String args[]){
Scanner in=new Scanner(System.in);
int n=in.nextInt();
in.nextLine();
for(int i=0;i<n;i++){
String s=in.nextLine();
Match(s);
}
}
}