这次先不看KMP算法。主要是459 的 移动匹配算法要了解
459. Repeated Substring Pattern
解释上卡哥和力扣的题解已经很多就不解释了。因为我还是没有太看懂,是用了一些例子才帮助自己理解了些,我也就放在这里一些例子,这样大家如果想看理论上的讲解,还是建议去力扣。具体例子如何实现可以往下看
假设是
abc abc
那子串就是abc
当我们把2个字符串合在一起的时候 abc abc abc abc 那肯定必然会有一个abc子串出现在中间。(注意在这里需要掐头去尾否则他就会跑去寻找前后出现的子串,那就没有意义了,就像是输入是s:我们创建了s + s 然后去找 s …这就很迷惑了)
如果这个字符串不符合标准: abc 无子串
我们合在一起的时候 abc abc
掐头去尾之后 bcab 可以发现里面没有 abc 出现 也就是该字符串是不符合标准。
用JAVA 一步到位
String t = s + s;
return t.substring( 1, t.length() - 1).contains(s);