可以用map做,附上字典树代码。
#include <stdio.h>
#include <string.h>
char max[100];
int ans;
struct Trie
{
Trie * ch[26];
int sz;
};
Trie p, *H;
void init()
{
H = &p;
for(int i = 0; i < 26; i++)
{
H->ch[i] = NULL;
H->sz = 0;
}
}
int idx(char c)
{
return c - 'a';
}
void insert(char *ss)
{
int len = strlen(ss);
H = &p;
for(int i = 0; i < len; i++)
{
int c = idx(ss[i]);
if(H->ch[c] == NULL)
{
H->ch[c] = new Trie;
H->ch[c]->sz = 0;
for(int ii = 0; ii < 26; ii++)
{
H->ch[c]->ch[ii] = NULL;
}
}
H = H->ch[c];
}
H->sz++;
if(H->sz > ans)
{
ans = H->sz;
strcpy(max, ss);
}
}
int main()
{
int n;
char c[100];
while(~scanf("%d", &n), n)
{
ans = 0;
init();
for(int i = 0; i < n; i++)
{
scanf("%s", c);
insert(c);
}
puts(max);
}
return 0;
}