給定一組字元,使用原地演算法將其壓縮。
壓縮後的長度必須始終小於或等於原陣列長度。
陣列的每個元素應該是長度為1 的字元(不是 int 整數型別)。
在完成原地修改輸入陣列後,返回陣列的新長度。
示例 1:
輸入:["a","a","b","b","c","c","c"]
輸出:返回6,輸入陣列的前6個字元應該是:["a","2","b","2","c","3"]
說明:"aa"被"a2"替代。"bb"被"b2"替代。"ccc"被"c3"替代。
示例 2:
輸入:["a"]
輸出:返回1,輸入陣列的前1個字元應該是:["a"]
說明:沒有任何字串被替代。
示例 3:
輸入:["a","b","b","b","b","b","b","b","b","b","b","b","b"]
輸出:返回4,輸入陣列的前4個字元應該是:["a","b","1","2"]。
官方標答:
def mycompress(chars):
anchor = 0 # 當前字元首次出現位置
write = 0 # 新的壓縮列表長度,也是當前要寫的位置——從頭開始直接用新列表的值覆蓋舊值
for read, c in enumerate(chars): # read 當前讀的位置,c 當前讀的字元
chars[write] = chars[anchor] # 寫入當前字元
write += 1 # 長度+1
if read > anchor: # 如果 當前字元出現次數》1:
for digit in str(read - anchor + 1): # 遍歷出現數目的每一位數字
chars[write] = digit # 寫入一位數字
write += 1 # 迴圈結束後,長度將增加當前字元出現數目的位數
anchor = read + 1 # 更新當前字元位置
return write # 返回新列表長度
LeetCode 壓縮字串
給定一組字元,使用原地演算法將其壓縮。壓縮後的長度必須始終小於或等於原陣列長度。陣列的每個元素應該是長度為1 的字元 不是 int 整數型別 在完成原地修改輸入陣列後,返回陣列的新長度。高階 你能否僅使用o 1 空間解決問題?示例 1 輸入 a a b b c c c 輸出 返回6,輸入陣列的前6個...
LeetCode 壓縮字串
題目描述 給定一組字元,使用原地演算法將其壓縮。壓縮後的長度必須始終小於或等於原陣列長度。陣列的每個元素應該是長度為1 的字元 不是 int 整數型別 在完成原地修改輸入陣列後,返回陣列的新長度。高階 你能否僅使用o 1 空間解決問題?示例 1 輸入 a a b b c c c 輸出 返回6,輸入陣...
LeetCode 字串壓縮
字串壓縮。利用字元重複出現的次數,編寫一種方法,實現基本的字串壓縮功能。比如,字串aabcccccaaa會變為a2b1c5a3。若 壓縮 後的字串沒有變短,則返回原先的字串。你可以假設字串中只包含大小寫英文本母 a至z 示例1 輸入 aabcccccaaa 輸出 a2b1c5a3 示例2 輸入 ab...