Python_百题大冲关_4.压缩字符串

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值