LeetCode 028. Implement strStr()

来源:互联网 发布:0信誉淘宝店铺平台 编辑:程序博客网 时间:2024/06/10 02:28

Implement strStr()

 

Implement strStr().

Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.






这道题实现是为了实现strStr()功能,但是更新后该函数返回值不再要求是char*,而是int,也即需要返回查找到的字符串的下标。

说白了,这道题其实就是为了实现字符串匹配功能,为了追求速度,使用修正后的KMP算法。

class Solution {public:void get_next(int * next, char * T){int i=0, j=-1;next[0] = -1;int len = strlen(T);while(i<len-1){if(j==-1 || T[i]==T[j]){++i;++j;if(T[i]!=T[j])next[i] = j;elsenext[i] = next[j];}elsej = next[j];}}    int strStr(char *haystack, char *needle) {if(!haystack || !needle) return -1;        int len_needle = strlen(needle);int len_haystack = strlen(haystack);if(len_needle == 0 && len_haystack == 0) return 0;if(len_needle > len_haystack) return -1;int *next = new int[len_needle];int i=-1, j=-1;get_next(next, needle);while(i<len_haystack && j<len_needle){if(j==-1 || haystack[i]==needle[j]){++i;++j;}elsej=next[j];}delete[] next;if(j==len_needle)return (i-len_needle);elsereturn -1;    }};
运行时间 12ms



0 0
原创粉丝点击