题目:
解答:
这题有参考别人的想法,换做我确实很难想到,但还是用我自己的话总结下思路吧。
思路大致如下:如果一个非空字符串s可以由它的一个子串重复多次构成,可以理解为s中存在m个子串,那么当两个字符串结合起来变成ss时,字符串s在新字符串ss的第二次位置不等于s的长度(相当于前一个字符串s中有n个子串,在后一个字符串中有m-n个子串,所以此时的位置不等于s的长度);反之,一个非空字符串s不可以由它的一个子串重复多次构成,那么当两个字符串结合起来变成ss时,字符串s在新字符串ss的第二次位置就在后一个字符串首字符的位置,其位置刚好等于s的长度。根据这一特征来判断。
1 class Solution { 2 public: 3 bool repeatedSubstringPattern(string s) 4 { 5 return (s+s).find(s,1)!=s.size(); 6 } 7 };
原文:https://www.cnblogs.com/ocpc/p/12823176.html