(簡単に)リバース文字列 - LeetCode

説明:

文字列と整数kを考えると、あなたは文字列の先頭から数えておき2kの文字の最初のk個の文字を逆にする必要があります。左kよりも小さい文字がある場合は、それらのすべてを逆転。2K未満が、文字k個以上がある場合、最初のk個の文字を逆にし、元のような他を残しました。

 

例:

入力: S = "ABCDEFG"、K = 2
 出力: "bacdfeg"

 

制限事項:

  1. 文字列は、下部のみ英文字で構成されています。
  2. 範囲で指定した文字列とK意志の長さ[1、10000]

 

 

溶液:

クラスソリューション{
     パブリック文字列reverseStr(文字列s、int型K){ 
    
    もし、(S == NULL || s.length()== 0 ){ 
        
        リターン "" 
    } 
        
    もし(K == 0 ){ 
        
        リターンS。
    } 
        
         
    整数 Z = 0 int型 TT = 0 ;
    もし((s.length()%(2 * K))!= 0 ){ 
        TT = s.length()/(2 * K)+1 
    } 
         {TT = s.length()/(2 * K);} 
    文字列[] ST = 新しい文字列[TT]。
        
        System.out.println(TT)。
        
    以下のためにint型 i = 0; I <= s.length() - 2 * K、I = I + 2 * K){ 
         
          ST [Z ++] = s.substring(I、iは+ 2 * K)。
    
         
    }    
    
    INT RES = s.length()%(2 * K)。
    
   
   文字列の結果 =「」;
    以下のためにint型 ; iはst.lengthを<I ++は、I = 0 ){
         場合(!ST [I] = NULL 
        結果 =結果+リバース(STは、[i]は.substring(0、K))+ ST [i]は。ストリング(K、2 * K)。
    } 
        
         文字列の最後 = s.substring(Z * 2 * K、s.length())。
    
 
        もし(RES> 0 ){
        
         もし(RES> = K && RES <2 * K){ 
             
              結果 =結果+逆(last.substring(0 、K))。
             
             文字列のTMP = "" ; 
             
             以下のためにint型私は= kは、iが(last.lengthを<); iは++ ){ 
                 
                 TMP = TMP + last.charAt(I)。
             } 
              
             結果 =結果+ TMP。
         } 
            { 
              結果 =結果+   逆(最後)。
            } 
         
    } 
    
        
        戻り値の結果; 
    }     
    
    パブリック文字列の逆(文字列s){
        
         StringBufferのSB = 新しいStringBufferの(S)。
        
        リターン   。sb.reverse()のtoString(); 
    } 
}
    
    

 

おすすめ

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