*****(leetcode_string) Implement strStr() (KMP算法*****)
2014-12-16 09:43
453 查看
Implement strStr()
Total Accepted: 29468 TotalSubmissions: 135898My Submissions
Question
Solution
Implement strStr().
Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
Update (2014-11-02):
The signature of the function had been updated to return the index instead of the pointer. If you still see your function signature returns a
char *or
String, please click the reload button to
reset your code definition.
Show Tags
Two Pointers String
Have you met this question in a real interview?
Yes
No
Discuss
class Solution { void getNext(char *needle, int next[]){ //构造next数组 int j = 0, k = -1; next[0]=-1; while(needle[j+1]!='\0'){ if(k==-1 || needle[k]==needle[j]){ ++j, ++k; if(needle[k]!=needle[j]) next[j]=k; else next[j]=next[k]; }else k=next[k]; } } public: int strStr(char *haystack, char *needle) { int *next = new int [strlen(needle)]; getNext(needle, next); int i=0,j=0, index=0; while(haystack[i]!='\0'&&needle[j]!='\0'){ if(haystack[i]==needle[j]) i++,j++; else{ //index+=j-next[j]; 可用来定位haystack中的位置, 不过用下面的i-strlen(needle) 更好理解 if(next[j]==-1) i++,j=0; else j=next[j]; // 这条语句包含了两种情况, next[j]=0时,j=0 and next[j]>=1时,j=next[j]; } } if(needle[j]=='\0') return i-strlen(needle); else return -1; } };
相关文章推荐
- 【leetcode KMP算法实现】Implement strStr()
- LeetCode_28---Implement strStr() [KMP算法,字符匹配算法]
- [leetcode][string] Implement strStr()
- [LeetCode] Implement strstr() to Find a Substring in a String
- leetcode_28题——Implement strStr()(采用KMP算法,还没AC,但自己这边测试无误)
- [Leetcode] Implement strStr()与 KMP算法
- leetcode 28: Implement strStr() (KMP算法)
- LeetCode-难题集之Implement strStr()与KMP算法
- Leetcode 28 Implement strStr() KMP算法
- [Leetcode][python]Implement strStr()/KMP算法
- LeetCode Implement strStr()(朴素的字符串匹配,RK算法,KMP算法)
- leetcode 28:Implement strStr()
- Leetcode: Implement strStr()
- leetcode---Implement strStr()
- LeetCode: Implement strStr()(字符串匹配:Sunday算法)
- Leetcode Implement strStr() My Submissions
- [LeetCode] 028. Implement strStr() (Easy) (C++/Python)
- 每天一道LeetCode-----KMP算法查找子串,重新实现strStr()函数
- leetcode 28 Implement strStr() C++
- leetcode | Implement strStr() | 实现字符串查找函数