代码随想录算法训练营第九天|28. 实现 strStr、459.重复的子字符串
文章讲解见《代码随想录》:https://programmercarl.com
视频讲解和代码建议y总:https://www.acwing.com
实现 strStr()
这道题目是经典的KMP,我这里不想叙述了,我感觉我无法叙述到我理解的那个层次,如果叙述出来,就和y总视频里说的,很多博客资料都说过KMP,大部分跟屎山一样,我觉得我写出来无疑是给着座山上添加原料而已,所以我就不叙述了,看了y总的视频,多想几次,都懂了。
459.重复的子字符串
先看代码:
class Solution {
public:
bool repeatedSubstringPattern(string s) {
int n = s.size();
s = ' ' + s;
vector<int> next(n + 1);
for(int i = 2,j = 0;i <= n;i++)
{
while(j && s[i] != s[j+1]) j = next[j];
if(s[i] == s[j+1]) j++;
next[i] = j;
}
int t = n - next[n];
return t<n && n % t==0;
}
};
这道题目也是跟KMP有关,就是用KMP解的,KMP我说不清,这道题目我自然也说不清,只能把代码放在这里,也是,我个人确实理解,但是说不精准,还是建议大家多看几次。