leetcode 443.文字列圧縮(文字列圧縮)



Leetcode 443 String Compression



問題の説明:

文字の配列を指定して、その場で圧縮します。



圧縮後の長さは、常に元の配列以下である必要があります。

配列のすべての要素は、長さ1の文字(intではない)である必要があります。



入力配列のインプレース変更が完了したら、配列の新しい長さを返します。

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

画像



注意:

[35、126]ではすべての文字にASCII値があります。
1<= len(chars) <= 1000.

コード:

class Solution { public int compress(char[] chars) { if(chars.length == 0) return 0 int mark = 0 int write = 0 for(int i = 0 i length i++){ if(i + 1 == chars.length || chars[i] != chars[i+1]){ chars[write] = chars[mark] write++ if(mark for(char a : (''+(i-mark+1)).toCharArray()) chars[write++] = a } mark = i + 1 } } return write } }