鱼C论坛

 找回密码
 立即注册
查看: 2343|回复: 4

如何使它在循环中仅遍历一次同样的字符

[复制链接]
发表于 2022-6-26 23:12:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
a=input("请输入待压缩字符串")
q=[]
for i in a:
    if a.count(i)>=3:
        q.append(a[a.index(i)])
        q.append(a.count(i))
    else:q.append(i)
print("压缩后的字符串",q)
print("压缩率为:","{:.2f}".format(len(q)/len(a)))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-6-26 23:36:24 | 显示全部楼层
>>> 'a' in ['a']
True
>>> 'a' in ['b','c']
False
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-27 00:04:30 | 显示全部楼层
你这思路不对呀,
count 不是数连在一起的两个字符, 你这样即使 abcadefa, 也会被压缩为 a3

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-27 04:24:45 | 显示全部楼层
a = input("请输入待压缩字符串:")
q = []
for i in a:
    if a.count(i) >= 3:
        if i not in [j[0] for j in q]:
            q.append(i+str(a.count(i)))
    else:
        q.append(i)
q = ''.join(q)
print("压缩后的字符串", q)
print("压缩率为:", "{:.2f}%".format(len(q) / len(a) * 100))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-27 11:09:21 | 显示全部楼层
还有压缩考虑,abc压缩完之后是a1b1c1,比原来的都还长的就没压缩的必要了
而且只有连续的才考虑压缩bbbcb压缩完是b3c1b1,不然b4c1怎么还原
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 01:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表