给定一个非空的字符串 s
,检查是否可以通过由它的一个子串重复多次构成。
这段代码实现了一个用于判断字符串是否可以通过重复某个子串多次来构造的算法。它通过检查所有可能的子串长度来进行验证,如果找到一个符合条件的子串,则返回 true
;否则,在遍历完所有可能性后返回 false
。
class Solution {
public:
bool repeatedSubstringPattern(string s) {
//获取字符串长度
int n=s.size();
//i表示可能的子串长度
for(int i=1;i*2<=n;i++){
//n能被i整除,表示i是可能的子串长度
if(n%i==0){
//默认为成立
bool match=true;
//遍历i到n-1字符串
for(int j=i;j<n;j++){
//如果当前字符与前i个字符不同,则不匹配
if(s[j]!=s[j-i]){
match=false;
break;
}
}
//i到n-1字符如果都匹配
if(match){
//返回true
return true;
}
}
}
//如果遍历了所有可能的子串都不匹配,返回false
return false;
}
};