[LC] 443文字列圧縮

文字の配列を指定して、それを圧縮  して、場所

圧縮後の長さは常に、元の配列より小さいか等しくなければなりません。

配列の各要素は、長さ1の文字(いないint型)でなければなりません。

あなたが入力配列変更が完了した後  で、場所を、配列の新しい長さを返します。

 

フォローアップ:
あなただけのO(1)余分なスペースを使用してそれを解決できますか?

 

例1:

入力:
[ ""、 ""、 "B"、 "B"、 "C"、 "C"、 "C"]

出力:
リターン6、及び入力配列の最初の6つの文字がなければならない:[ ""、 "2"、 "B"、 "2"、 "C"、 "3"]

説明:
「AA」から「A2」に置き換えられます。「BB」は、「B2」に置き換えられます。「CCC」は、「C3」に置き換えられます。

クラスソリューション{
     公共 のint圧縮(CHAR []文字){
         場合(chars.length <= 1 ){
             戻りchars.length。
        }
        int型のインデックス= 0 ;
        int型のres = 0 ;
        一方、(指数< chars.length){
             int型 curCount = 0 チャー curChar = 文字[インデックス]。
            一方、(指数<chars.length &&文字[インデックス] == curChar){
                インデックス + = 1 ;
                curCount + = 1 ;
            }
            文字[RES ++] = curChar。
            もし(curCount = 1!){
                 チャーC:持つInteger.toString(curCount).toCharArray()){
                    文字[RES] = C。
                    RES + = 1 ;
                }
            }
        }
        リターンのres;
    }
}

 



おすすめ

転載: www.cnblogs.com/xuanlu/p/12182187.html