[LeetCode] 443. 圧縮文字列

1054 ワード

443.圧縮文字列は、その場アルゴリズムを使用して圧縮される文字のセットを与える.圧縮後の長さは、元の配列の長さよりも常に小さいか、または等しい必要があります.配列の各要素は長さ1の文字(int整数タイプではない)であるべきである.入力配列をその場で修正した後、配列の新しい長さを返す.例:入力:["a","a","b","b","c","c","c"]出力:6を返し、配列に入力された最初の6文字は["a","2","b","2","c","3"]説明:「aa」が「a 2」に置き換えられる.「bb」が「b 2」に置き換えられる.「ccc」が「c 3」に置き換えられる代替.
class Solution:
    def compress(self, chars):
        n = len(chars)  #     
        i, count = 0, 1 #       i,       count
        for j in range(1, n+1): #           
            if j < n and chars[j] == chars[j-1]:    #               
                count += 1  #    +1
            else:
                chars[i] = chars[j-1]   #                
                i += 1  #        +1
                if count > 1:   #         1         
                    for m in str(count):    #     
                        chars[i] = m    #      
                        i += 1  #      +1
                count = 1   #   1
        return i