题目链接
class Solution {
public:
vector<int> getNext(string s) {
int n = s.length();
vector<int> next(n, 0);
int j = 0;
for (int i = 1; i < n; i++) {
while (j > 0 && s[i] != s[j]) {
j = next[j-1];
}
if (s[j] == s[i]) {
j++;
}
next[i] = j;
}
return next;
}
bool repeatedSubstringPattern(string s) {
int len = s.length();
vector<int> next = getNext(s);
if (next[len-1] != 0 && len % (len - next[len-1]) == 0) {
return true;
}
return false;
}
};
问题分析
- 由于上次写kmp算法已经是20天前的事情了,所以再写的时候还是看了一遍以前的思路
- 但在写的时候还是出了问题,把比较的数组搞错了
- 然后就是next(len-1) == 0的时候应为false