2016-09-16 130 views
0

如果重复模式不存在,我需要找到重复模式,如果它存在于字符串中或返回字符串。在正则表达式中寻找重复模式的方法

实施例:

  • 的String = “ABCABC”;重复模式为abc

  • String s =“aba”;重复模式为aba

  • String s =“abbbbbbba”;重复模式是abbbbbbba;

  • String s =“abcdabcdabcd”;重复的模式是abcd;

如果你指的链接就可以解决这个使用正则表达式 Finding a repeated pattern in a string。 但除了正则表达式还有其他方法可以解决它吗?

+0

循环测试第一个字符是否重复,然后测试前两个字符是否重复等。你有什么尝试? – nnnnnn

回答

0

如果有一个模式=>它的长度必须把字符串长度

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--)