KMP生成字串数组时遇到了bug
void build_array(char* substr, int length){
int* sub_array = (int*)malloc((length+1)*sizeof(int));
for(int a=0; a<=length+1;a++)
{
sub_array = 0;
}
int i = 1;
int j = 0;
while(i<=length)
{
if (substr==substr)
{
sub_array ++;
i++;
j++;
}
else
{
j = 0;
}
}
//test the sub_array
printf("\nThe sub_array so far is :\n");
for(int k = 0; k<=length; k++)
{
printf("%d ", sub_array);
}
printf("\n");
}思路如下:
建立数组
字符子串与0~n的数组匹配
j指向,i指向
j字母==i字母
i的数组值+1
i右移,j右移
j字母!=i字母
j退回位置,重新检查
问题出在while循环中,
请问各位能否帮我看下错在哪里,谢谢啦
这是写next数组? 你这next数组写的什么跟什么啊, while(i<=length)
{
if (substr==substr)
{
sub_array ++;
i++;
j++;
}
else
{
j = 0;
}
}
自己读一下,substr!=substr之后不直接死循环了 Croper 发表于 2019-4-25 10:56
你这next数组写的什么跟什么啊,
自己读一下,substr!=substr之后不直接死循环了
谢谢谢谢啦
还没看next数组怎么写hh
了解kmp大概思路之后想自己先试一下,再对比
页:
[1]