首页 > 代码库 > 【LeetCode】Implement strStr()
【LeetCode】Implement strStr()
Implement strStr()
Implement strStr().
Returns a pointer to the first occurrence of needle in haystack, or null if needle is not part of haystack.
标准KMP算法。可参考下文。
http://blog.csdn.net/yaochunnian/article/details/7059486
核心思想在于求出模式串前缀与后缀中重复部分,将重复信息保存在next数组中。
class Solution { public: int getlen(char *str) { int i; for(i = 0; str[i] != ‘\0‘; i ++) ; return i; } void getnext(char *str, int len, int next[]) { int i = 0; next[i] = -1; int j = -1; while(i < len-1) { if(j==-1 || str[i]==str[j]) { i++; j++; if(str[i] == str[j]) next[i] = next[j]; else next[i] = j; } else j = next[j]; } } char *strStr(char *haystack, char *needle) { int hlen = getlen(haystack); //cout << "hlen:" << hlen << endl; int nlen = getlen(needle); //cout << "nlen:" << nlen << endl; int *next = new int[nlen]; getnext(needle, nlen, next); int i = 0; int j = 0; while(i != hlen && j != nlen) { if(j == -1 || haystack[i] == needle[j]) { i++; j++; } else { j = next[j]; } } if(j == nlen) return &haystack[i-nlen]; else return NULL; } };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。