4.压缩字符串
题目描述
实现一个算法来压缩一个字符串。压缩的要求如下:
需要判断压缩能不能节省空间,仅在压缩后字符串比原字符串长度更短时进行压缩。
压缩的格式是将连续相同字符替换为字符+数字形式,例如 “AAABCCDDDD” 变为 “A3BC2D4”。
内容
本次挑战中,你需要在 compress_str.py 文件中补充函数 compress 的空缺部分。
compress 函数接受一个参数,string 用于指定传入的字符串;
compress 函数输出一个字符串。
你需要补充 compress 函数,使 compress 函数可以对传入的 string 字符串进行压缩。要求如下:
判断传入的字符串是否需要进行压缩,如果不需要压缩,返回原字符串;
如果需要压缩,返回压缩后的字符串;
如果传入的字符串是 None 或者空字符串,返回 None 或者空字符串。
思路
莽
代码
class CompressString(object):
def compress(self, string):
if string is None or not string:
return string
res = ""
lenth = len(string)
i = 0
while i < lenth:
num = 1
look = i
if look != lenth - 1:
while True:
if string[look] == string[look+1]:
num += 1
elif string[look] != string[look+1]:
break
look += 1
if look == lenth - 1:
break
if num == 1:
res += string[i]
else:
res += string[i]
res += str(num)
i += num - 1
i += 1
if len(res) == len(string):
return string
else:
return res