给定一个非空的字符串 s
,检查是否可以通过由它的一个子串重复多次构成。
class Solution {
public:
bool repeatedSubstringPattern(string s) {
string str = s+s;
str = str.substr(1,str.length() - 2);
if(str.find(s)!=-1)
return true;
else
return false;
//abaaba
}
};
思路:
- s+s
- 破坏到第一个s的前半部分,破坏掉第二个s的后半部分
- 如果是一个子串重复多次构成,则第一个s的后半部分和第二个s的前半部分一定可以拼凑成一个s
- 如果不是,肯定拼凑不出来
- 即s+s,掐头去尾找自己