已通过测试,望采纳。
#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语言小弟就更加感谢了!
追答这样我就只有最笨的办法了。
打开文件——读取单词——放入单词记录字符串数组——每读取一次与字符串数组的单词比较——重复则记录并放入重复单词字符串数组——不重复继续补充放入单词记录字符串数组——循环循环
时间空间复杂度肯定不乐观。
好的方法没有了,咱不是大神,坐等大神继续回答。