给定一组字符,使用原地算法将其压缩。
压缩后的长度必须始终小于或等于原数组长度。
数组的每个元素应该是长度为1 的字符(不是 int 整数类型)。
在完成原地修改输入数组后,返回数组的新长度。
进阶:
你能否仅使用O(1) 空间解决问题?
class Solution:
def compress(self, chars: List[str]) -> int:
w = 0 #写入位置
anchor = 0 #同批相同字符开始位置
for i in range(len(chars)):
if i==len(chars)-1 or chars[i+1] != chars[i]:
chars[w] = chars[anchor]
w+=1
#大于一个字符的情况
if i>anchor:
for c in str(i - anchor +1):
chars[w] = c
w+=1
anchor = i+1
return w
网友评论