(写给未来遗忘的自己)
class Solution {
public:
bool repeatedSubstringPattern(string s) {
int may_repeate;
int fast_ptr;
int last_ptr=0;
for(int i=1;i<s.size();i++){
if(s.size()%i==0){
fast_ptr=i;
for(fast_ptr;fast_ptr<s.size();fast_ptr++){
char a=s[fast_ptr];
char b=s[last_ptr];
if(a!=b){
last_ptr=0;
break;
}
last_ptr++;
if(last_ptr>=fast_ptr) last_ptr=0;
}
if(fast_ptr==s.size()){
return true;
}
}
}
return false;
}
};
思路:
1.如果可以一个字符串重复构成,那么这个字符串的个数(i)肯定可以被总数(n)整除。所以选择可以整除的数,作为轮回,将后面的所有数前i个比对重复。
2.如果不一样就跳出当前循环,如果一样就一直循环到数组结束,
3.判断fast_ptr是否自然结束,自然结束就是找到了,否则就没找到。