2016-09-16 6 views
0

繰り返しパターンが文字列に存在する場合はそれを探したり、繰り返しパターンが存在しない場合は文字列を返す必要があります。Regexとは別に文字列の繰り返しパターンを見つける方法

例:

  • のString = "ABCABC"。反復パターンはabc

  • 文字列s = "aba"です。繰り返しパターンはaba

  • 文字列s = "abbbbbbba"です。繰り返されるパターンはabbbbbbbaです。

  • 文字列s = "abcdabcdabcd";繰り返されるパターンはabcdです。あなたがリンクを参照してください場合は

私たちは、この使用して正規表現 Finding a repeated pattern in a stringを解決することができます。 しかし、正規表現から離れて私はそれを解決することができるいくつかの他の方法はありますか?

+0

最初の文字が繰り返されるかどうかをテストし、最初の2文字が繰り返されるかどうかをテストするループですか?何を試しましたか? – 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--)

を行い、最小のパターンを返すこと

注意を分ける必要があります

関連する問題