求c语言大神帮助!!!求 最快 算法啊!!!从上千万的单词里面找出重复的单词,并算每个重复单词重复次数

求帮助!!!

已通过测试,望采纳。
#include <stdio.h>
#include <string.h>
main()
{ char string[100000],select[15];
int n=0;
char *p,*q;
int i,length,flag;
printf("Input a string:");
gets(string);
printf("Input the string you want to be changed:");
scanf("%s",select);
length=strlen(select);
p=q=string;
for(;*p;p++)
if(*p==select[0])
{
flag=1;
q=p;
for(i=0;i<length;i++)
{ if(*q!=select[i])
{ flag=0;
break;
}
else q++;
}
if(flag==1)
{ n++;
p=q-1;
}
}
printf("The word %s comes %d times in the string.\n",select,n);
}追问

其实是这样的,只给了一个文件,里面有上千万个单词,不是这要找一个特定的sleect,而是把其中所有出现过重复的单词都找到, 还有时间要求算法越快越好 大神要是知道算法的话告诉我算法就行 要是有具体c语言小弟就更加感谢了!

追答

这样我就只有最笨的办法了。
打开文件——读取单词——放入单词记录字符串数组——每读取一次与字符串数组的单词比较——重复则记录并放入重复单词字符串数组——不重复继续补充放入单词记录字符串数组——循环循环
时间空间复杂度肯定不乐观。
好的方法没有了,咱不是大神,坐等大神继续回答。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-08
1,先对单词排序,可采用hash树进行排序。
2,排序后遍历一遍就可以把重复的单词找出来而且计算出重复次数。
个人见解
第2个回答  2020-10-21
作者知道答案了吗?分享一下
相似回答