题目描述
字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。
示例1:
输入:"aabcccccaaa"
输出:"a2b1c5a3"
示例2:
输入:"abbccd"
输出:"abbccd"
解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。
解题思路:
这个题目比较简单, 直接遍历进行字符比较即可, 需要注意如果压缩后的字符串比原字符串长时, 需要返回原字符串
- 定义一个临时字符tempC和临时字符的个数count
- 遍历字符串如果当前字符与tempC相同, 则count+1, 否则就对当前已有的tempC和count进行result拼接, 并且重置tempC和count
- 遍历完成后需要将最后一次遍历的tempC和count也加入到result中
- 判断长度返回result或原字符串
示例代码
def compressString(self, S: str) -> str:
if len(S) <= 0: return S
result = ""
tempC = S[0]
count = 0
for item in S:
if tempC == item:
count += 1
else:
result += f"{tempC}{count}"
tempC = item
count = 1
result += f"{tempC}{count}"
return S if len(result) >= len(S) else result