字符串压缩
利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。
比如,字符串 aabcccccaaa 会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。
你可以假设字符串中只包含大小写英文字母(a至z)。
示例1:
输入:"aabcccccaaa"
输出:"a2b1c5a3"
示例2:
输入:"abbccd"
输出:"abbccd"
解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。
提示:
字符串长度在[0, 50000]范围内。
自我解答:
这题很简单,唯一的麻烦是在边界处理上
def compress_string(S: str) -> str:
ori_len = len(S)
if ori_len < 3:
return S
buf_s = [S[0], ]
now_count, index = 1, 1
for index in range(1, ori_len):
s = S[index]
if s != buf_s[-1]:
buf_s.append(str(now_count))
buf_s.append(s)
now_count = 1
else:
now_count += 1
buf_s.append(str(now_count))
return "".join(buf_s) if len(buf_s) < ori_len else S