LeetCode 28. 实现 strStr()
原题链接
简单
作者:
飞呀
,
2021-05-01 17:05:32
,
所有人可见
,
阅读 344
算法1
KMP
class Solution {
public:
int strStr(string s, string p) {
if(p.empty()) return 0;
int n = s.size();
int m = p.size();
//得到next数组
int next[m+1];
int j = 0, k = -1;
next[j] = k;
while(j < m){
if(k == -1 || p[j] == p[k]){
j++;
k++;
next[j] = k;
}else{
k = next[k];
}
}
//kmp算法
int i = 0;
j = 0;
while(i < n && j < m){
if(j == -1 || s[i] == p[j]){
i++;
j++;
}else{
j = next[j];
}
}
//printf("%d %d %d\n", i, j, m);
if(j == m){
return i - j;
}else{
return -1;
}
}
};
变量写到数组长度里面不是会有警告吗 / xk
这个在力扣没有提示欸,不过正常都是直接用全局变量的数组的,这里能通过我就没管了哈哈哈