给出n(1<= n && n <= 2*10^6)个字符串,每个字符串只包含小写英文字母,且最多有五个。问这n个字符串中出现次数最多的有多少个。
输入
单组输入。第一行输入一个数字n,接下来n行,每行包含一个字符串。
输出
输出一个数字代表答案。
示例输入
5abaabbwabaz
示例输出
2
提示
#include <iostream>
#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>const int N = 20010;using namespace std;struct node{ int flag; node *next[26];};int n,m,ans = 0;struct node *Creat(){ node *p = new node; for(int i=0; i<26; i++ ) { p->next[i] = NULL; } p->flag = 0; return p;}void INsert( node *root, char *b){ int num; int len = strlen(b); node *p = root; for(int i = 0;i<len;i++) { num = b[i]-'a'; if(p->next[num]==NULL) { p->next[num] = Creat(); } p = p->next[num]; } p->flag++; if(p->flag > ans) ans = p->flag;}void FREE(struct node*root){ for(int i = 0;i<n;i++) { if(root->next[i]!=NULL) { FREE(root->next[i]); } } free(root);}int main(){ char a[N][50],s[50]; node *p; scanf("%d",&m); p = Creat(); for(int i = 0;i<m;i++) { scanf("%s",s); INsert(p,s); } printf("%d\n",ans); FREE(p); return 0;}