【字符串】459. 重复的子字符串

题目:

解答:

这题有参考别人的想法,换做我确实很难想到,但还是用我自己的话总结下思路吧。

思路大致如下:如果一个非空字符串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 };

猜你喜欢

转载自www.cnblogs.com/ocpc/p/12823176.html
今日推荐