#include<stdio.h>
#include<string.h>
int main(){
char *str="ababababbbcdd";
char s[5]="bbcd";
int i,j,n=0;
int Hash = Hashnumber(s); //算出s对应的哈希值
int s_len = strlen(s);
for(i=0;i+s_len<=strlen(str);i++){
char help[4]={'\0'};
for(j=i;j<i+s_len;j++){ //将从i之后的子串记录下来
help[n++]=str[j];
}
int hashtemp = Hashnumber(help); //计算对应的哈希值
if(hashtemp==Hash){
printf("第%d个字符开始\n",i+1);
}
n=0;
}
}
int Hashnumber(char *s){
int i=0;
int hash=0;
while(s[i]!='\0'){
hash=hash*11+s[i]; //11为一个素数,其他素数也可
i++;
}
return hash;
}