标签:后缀 个数 就是 直接 strstr 问题 etc tco while
就是使用KMP算法进行字符串的匹配,但是我发现我之前的kmp写的有问题,然后修补了一下板子漏洞2333
next数组含义:next[i]表示 到i为止,前缀 和 后缀 相同的个数-1
(为啥-1呢,比如 aabaab
, next[6] = 2
,这样的话,aabaab不是的话 就直接失配到aab,大概意思就是这样)
class Solution {
public:
int strStr(string s, string t) {
int l1 = s.size(), l2 = t.size();
if(l2 == 0) return 0;
int next[l2] = {0};
next[0] = -1;
for(int i=1; i<l2; i++) {
int j = next[i-1];
while(j!=-1 && t[j+1] != t[i])
j = next[j];
if(t[j+1] == t[i])
next[i] = j+1;
else
next[i] = -1;
}
// now kmp
int i = 0, j = 0;
while(i < l1) {
if(s[i] == t[j]) {
i++, j++;
if(j == l2) {
return i-l2;
}
} else {
if(j == 0)
i++;
else
j = next[j-1] + 1;
}
}
return -1;
}
};
leetcode 28 Implement strStr()
标签:后缀 个数 就是 直接 strstr 问题 etc tco while
原文地址:https://www.cnblogs.com/Draymonder/p/10966662.html