strstr模板

来源:互联网 发布:朝鲜核讹诈中国知乎 编辑:程序博客网 时间:2024/06/17 10:57

class Solution {  public:     int strStr(char *haystack, char *needle) {         int Hlen = strlen(haystack), Nlen = strlen(needle), k=-1, j=0, i=0;         int *prev = new int[Nlen];         prev[0]=-1;         while(j < Nlen-1){            if( k==-1 || needle[k]==needle[j] ){                 prev[++j] = ++k;               }else{                 k = prev[k];            }        }        i=j=0;        while(i<Hlen&&j<Nlen){            if(j==-1||haystack[i]==needle[j]){                   i++;j++;            }else{                   j=prev[j];            }        }        delete prev;        if(j==Nlen){            return i - j;        }else{             return -1;        }    }};


以上代码通过leetcode的测试  https://oj.leetcode.com/problems/implement-strstr   

算法解释详见:http://blog.csdn.net/v_july_v/article/details/7041827



0 0
原创粉丝点击