力扣 28. 找出字符串中第一个匹配项的下标 //kmp算法

代码:

int strStr(char* haystack, char* needle) {

   int len1=strlen(haystack);

   int len2=strlen(needle);

   if(len1

   int next[10010]={0};//初始化next数组

   int low=0;

   for(int fast=1;fast

   {

       while(low>0&&needle[fast]!=needle[low])

       {

           low=next[low-1];

       }

       if(needle[fast]==needle[low])

       {low++;

       

       }

       next[fast]=low;

   }

int i=0;

for(int j=0;j

{

    while(i0&&haystack[j]!=needle[i])

{

   

    i=next[i-1];

}

if(haystack[j]==needle[i])

{

   

    i++;

}

if(i>=len2) return j+1-len2;

}

return -1;

}

你可能感兴趣的:(算法,leetcode)