python压缩字符串的实现

代码如下:

s="aAAddjKKklrRRRs"

#不区分大小写,使用upper()将串中字符全部转为大写

s=s.upper()

#a用来存放得到的压缩结果

a=[]

#初始化count为1,用于统计连续相同字符个数

count=1

#遍历,因为判断的是s[i]与s[i+1]是否相同,所以range()的上界设置为len(s)-1

for i in range(len(s)-1):

    if s[i]==s[i+1]:

        count=count+1

#特殊处理,如果s[i+1]是最后一个字符,且与s[i]相同,则将(s[i+1],count)作为元组添加到a中

        if i+1==len(s)-1:

            b=(s[i+1],count)

            a.append(b)

    else:

#若s[i]与s[i+1]不同,则将(s[i],count)作为元组加入a中

            b=(s[i],count)

            a.append(b)

            count=1

#特殊处理,若s[i+1]是最后一个元素,且与s[i]不同,则表示最后一种字符只出现一次,将(s[i+1],1)作为元组加入a中

            if i+1==len(s)-1:

                b=(s[i+1],1)

                a.append(b)

#使用字符串拼接进行格式处理,遍历a,i[0]为每个元组第0个元素,即哪种字符,i[i]为元组第1个元素,即count,连续字符个数

c=""

for i in a:

    c+=f"({i[0]},{i[1]})"

print(c)

代码中已经写入相关注释,如有问题,欢迎讨论。不算很难的一道头歌题目

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值