文字の配列を指定して、それを圧縮 して、場所。
圧縮後の長さは常に、元の配列より小さいか等しくなければなりません。
配列の各要素は、長さ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; } }