2016-09-16 131 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--)