(簡単に)繰り返し文字列の一致 - LeetCode

説明:

二つの文字列AとBを考えると、AはBがそれのサブあるように繰り返されなければならない時間の最小数を見つけます。そのような解決策場合は、-1を返します。

例えば、A = "ABCD" とB = "cdabcdab" と。

三回(「abcdabcdabcd」)を繰り返すことによって、Bがそれのサブストリングであるため、3を返します。そしてBは、繰り返し2回サブストリング(「たとえばABCDABCD」)ではありません。

注意:
の長さAB1と10000の間となります。

容認されました
73870
提出
233180

 

溶液:

最初の試み:失敗した原因TIME OUT例外へ

 

 

Apparantly、文字列Bが非常に長い、そしてAが極端に短い、繰り返し回数場合はこのように、タイムアウト例外を引き起こすほとんどの文字列Bと同じ長さです。 

 

 

クラスソリューション{
     公共 のint repeatedStringMatch(列A、列B){ 
        
        場合(A == NULL || A.length()== 0 ){
             戻り -1 
        } 
        
        int型時間=てb.length()/ A.length()+ 2 ; 
      
      // のSystem.out.println(リピート(A、3).indexOf(B))。
        
        以下のためにint型 i = 1; iが<=回; iは++ ){ 
            
            場合(リピート(A、I).indexOf(B)> - 1 ){ 
                
                リターンI。
            } 
        } 
        
        戻り   -1 
    } 
    
    静的文字列の繰り返し(列A、INTB){ 
        文字列結果 = 
        
        以下のためにint型 ; iはB <I ++はi = 1 {)
            
            結果 =結果+ 
        } 
        
        戻り値の結果; 
    } 
}

 

 

おすすめ

転載: www.cnblogs.com/codingyangmao/p/11490302.html