问题描述:
字符串压缩
设计一种方法,通过给重复字符计数来进行基本的字符串压缩。
例如,字符串 aabcccccaaa 可压缩为 a2b1c5a3 。而如果压缩后的字符数不小于原始的字符数,则返回原始的字符串。
可以假设字符串仅包括 a-z 的字母。
样例
样例 1:
输入:str = “aabcccccaaa”
输出:“a2b1c5a3”
样例 2:
输入:str = “aabbcc”
输出:“aabbcc”
解决方案:
class Solution:
"""
@param originalString: a string
@return: a compressed string
"""
def compress(self, originalString):
# write your code here
if not originalString:#字符串为空,返回 ""
return ""
ch=originalString[0]#初始化为字符串第一个字符
S=''#创建一个空字符串
count=0#计数重复字符
for i in originalString:#遍历字符串
if i==ch:
count+=1
else:
S+=ch+str(count)#字符串连接,将数字类型的count转化为字符类型str
ch=i
count=1
S+=ch+str(count)#最后一个字符的连接
if len(originalString)>len(S):
return S
else:
return originalString