【发布时间】:2025-11-21 23:45:02
【问题描述】:
假设我有一个以下列方式呈现的字符串:
st = 'abbbccccaaaAAbccc'
任务是对其进行编码,以便单个字符后面跟着它们的出现次数:
st = 'a1b3c4a3A2b1c3'
我知道一种可能的解决方案,但它过于庞大和原始。
s = str(input())
l = len(s)-1
c = 1
t = ''
if len(s)==1:
t = t +s+str(c)
else:
for i in range(0,l):
if s[i]==s[i+1]:
c +=1
elif s[i]!=s[i+1]:
t = t + s[i]+str(c)
c = 1
for j in range(l,l+1):
if s[-1]==s[-2]:
t = t +s[j]+str(c)
elif s[-1]!=s[-2]:
t = t +s[j]+str(c)
c = 1
print(t)
有什么方法可以快速优雅地解决这个问题吗?
P.S:我是一个没有经验的 Python 用户和一个新的 * 成员,所以如果问题被错误地提出,请原谅。
【问题讨论】:
-
向我们展示您所知道的方式,以便我们了解您认为“笨重和原始”的东西。
-
我建议你搜索运行长度编码。
-
将代码放入问题中。很难在评论中阅读冗长的代码。
-
@khelwood 这很有帮助,谢谢!
-
@JohnGordon 代码现在在问题中,但我必须警告你——它真的很笨重!我想应该改用字典或列表。
标签: python string replace count run-length-encoding