思路:首先,空字符和单个字符串肯定是不能重复,先把这种情况排除。然后字符串“ababab",先截取字符串“a”,看是否重复后面的字符串“babab”,再截取“ab”看是否重复后面的字符“abab”,如果能完成重复,则满足要求,结束代码,如果不能,则继续截取“abc”进行重复。
代码:先排除空字符和单个字符,第一个for循环截取字符串,最长为n/2,第二个for循环用于检查是否可以重复
class Solution {
public:
bool repeatedSubstringPattern(string s) {
int n = s.length();
if (n <= 1) return false;
bool flag = true;
for (int i = 1; i <= n / 2; i++)
{
if (n % i == 0)
{
flag = true;
string t = s.substr(0, i);
for (int j = i; j + i <= n; j += i)
{
string t1 = s.substr(j, i);
if (t != t1)
{
flag = false;
break;
}
}
if (flag == true) break;
}
}
return flag;
}
};
该篇文章介绍了如何使用C++编写一个名为Solution的类,通过两个for循环来检查给定字符串s中是否存在重复的子串模式。方法是逐个截取可能的子串并检查其是否在后续部分重复。
405





