字符串压缩
-题目-
字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。
-示例1-
输入:"aabcccccaaa"
输出:"a2b1c5a3"
-示例2-
输入:"abbccd"
输出:"abbccd"
解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。
-方法1-
- 遍历字符串
S
。如果当前字符char
和上一字符the_last_one
相等,则计数count
加1,否则结果字符串new_str
末尾加上"{the_last_one
}{count
}"。返回时要判断结果字符串是否比原字符串短。
-ac代码-
class Solution:
def compressString(self, S: str) -> str:
if not S:
return S
the_last_one = S[0]
count = 1
new_str = ''
for char in S[1:] + ' ':
if char == the_last_one:
count += 1
else:
new_str += f"{the_last_one}{count}"
the_last_one = char
count = 1
return new_str if len(new_str) < len(S) else S
-复杂度-
- \(T(n) = O(n)\)
- \(S(n) = O(1)\)
-方法1笔记-
- 题目-笔记:在原字符串末尾加上一个任意字符才能使结果字符串考虑原字符串每个字符。
- python-笔记:
return expr if expr1
是错误的,return expr if expr1 else pass
也是错的。