风中醉柳 发表于 2014-5-29 16:50:30

求大神帮忙看看我的这个字符串查找是不是KMP算法

本帖最后由 风中醉柳 于 2014-5-29 17:38 编辑

#include<stdio.h>

int main(void)
{
    char str1={'\0'},str2={'\0'};
    int i=0,j=0,k;
    printf("输入主串str1:");
    scanf("%s",str1);
    printf("输入子串str2:");
    scanf("%s",str2);
   
    while(str1)
    {
      j=0;
      if(str1!=str2)
      {
            i++;
            continue;
      }
      if(str1==str2)
      {
            i++;
            j++;
            if(str1!=str2)
            {
                j=0;
                continue;
            }
            else
            {
                k=i;
                while(str2)
                {
                  i++;
                  j++;
                  if(str1==str2)
                        continue;
                  else
                        break;
                }
                if(str2=='\0')
                  printf("\n分析结果:\nstr2是str1的子串\n开始于str1的第 %d 号位置\n结束于str1的第 %d 号位置\n\n",k,i);
            }
      }   
    }
    if(str2!='\0')
      printf("\n分析结果:\nstr2不是str1的子串\n");
    return 0;
}

附上贴图:

elvo 发表于 2014-5-30 10:51:43

这应该不是KMP算法吧。。。KMP算法一个很关键性的标志是要求next数组的。。。

风中醉柳 发表于 2014-6-3 18:12:29

elvo 发表于 2014-5-30 10:51 static/image/common/back.gif
这应该不是KMP算法吧。。。KMP算法一个很关键性的标志是要求next数组的。。。

额 ,谢谢啦
页: [1]
查看完整版本: 求大神帮忙看看我的这个字符串查找是不是KMP算法