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 } }