如果它存在于字符串中,我需要找到重复的模式,或者如果重复的模式不存在则返回一个字符串。
示例:
String s =“abcabc”;重复模式是abc
String s =“aba”;重复模式是aba
String s =“abbbbbbba”;重复模式是abbbbbbba;
String s =“abcdabcdabcd”;重复模式是abcd;
如果您参考链接我们可以使用正则表达式来解决这个问题 Finding a repeated pattern in a string。 但除了正则表达式之外还有其他方法可以让它解决吗?
答案 0 :(得分:1)
如果有图案=>它的长度必须除以字符串长度
for (int i =2;i < sqrt(length(s));i++)
{
if(length(s) % i == 0)
{
string pattern = s.substring(0,i);
bool isPatern = true;
int j = i +1;
while(isPatern && j<length(s))
{
if(s.substring(j,i)==pattern)
{
j = j+i;
}
else
{
isPatern =false;
}
}
if (isPattern) return pattern;
}
}
请注意,这将返回最小的模式,如果您想要最长的模式for (int i =length(s)/2;i > sqrt(length(s));i--)