首页 > 学院 > 开发设计 > 正文

28. Implement strStr()

2019-11-06 07:04:42
字体:
来源:转载
供稿:网友
Implement strStr().Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.class Solution {public: int strStr(string haystack, string needle) { const int len1 = haystack.length(); const int len2 = needle.length(); if(len2 > len1) return -1; if(len2 == 0) return 0; return kmp(haystack, len1, needle, len2); } int kmp(string& haystack, int len1, string& needle, int len2){ vector<int> next = get_next(needle, len2); int i = 0, j = 0; while(i < len1 && j < len2){ if(j == -1 || haystack[i] == needle[j]){ ++i; ++j; } else j = next[j]; } return j == len2 ? i - len2 : -1; } vector<int> get_next(string& needle, int len){ vector<int> next(len, 0); next[0] = -1; int k = -1, j = 0; while(j < len - 1){ if(k == -1 || needle[k] == needle[j]) next[++j] = ++k; else k = next[k]; } return next; }};
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表