class Solution {
public:
void getNext(int *next,string s){
int j=0;
next[0]=0;
for(int i=1;i<s.size();i++){
while(j>0 && s[i]!=s[j]){
j=next[j-1];
}
if(s[i]==s[j]) j++;
next[i]=j;
}
}
bool repeatedSubstringPattern(string s) {
if(s.size()==0) return false;
int next[s.size()];
getNext(next,s);
if(next[s.size()-1]!=0 && s.size()%(s.size()-next[s.size()-1])==0){
return true;
}
return false;
}
// 若 s="abcabcabc",则next[]=[0,0,0,1,2,3,4,5,6]
// next数组记录的时相同字符串的长度
};