ZhongKuo0228 / study

0 stars 0 forks source link

443. String Compression #67

Open fockspaces opened 10 months ago

fockspaces commented 10 months ago

GPT 最近掛掉,只有自己寫的版本

  1. pointer 來紀錄當前 array length
  2. 遇到相同,計數
  3. 遇到不同,開始寫入 array

這邊比較 tricky 的部分是,我 append 一個不可能出現的 element "0",作為 list 末尾,避免最後一個字母沒有被算入

class Solution:
    def compress(self, chars: List[str]) -> int:
        chars.append(0)
        pt, counts, cur_char = 1, 0, chars[0]
        for char in chars:
            if cur_char == char:
                counts += 1
            else:
                if counts > 1:
                    for n in str(counts):
                        chars[pt] = n
                        pt += 1
                counts = 1
                chars[pt] = cur_char = char
                pt += 1
        return pt - 1