首页 > 解决方案 > 使用python计算每个相邻字符的出现

问题描述

使用 Python 来解决这个问题: 定义一个接受字符串的函数,计算每个相邻字符出现的次数。此函数应返回一个包含每个字符及其计数的字符串。例如:

'jjjjeerrr' 将返回到 'j4e2r3'

标签: python

解决方案


zip()当您需要将字符串或列表的元素与其后继或前任进行比较时,该函数是您的朋友。有了它,您可以获得每个重复序列中第一个字母的索引。然后可以组合这些“中断”位置(再次使用 zip)以形成开始/结束范围,从而为您提供重复的大小:

def rle(S):
    breaks = [i for i,(a,b) in enumerate(zip(S,S[1:]),1) if a!=b]
    return "".join(f"{S[s]}{e-s}" for s,e in zip([0]+breaks,breaks+[len(S)]))

输出:

print(rle("jjjjeerrr"))      # j4e2r3
print(rle("jjjjeerrrsssjj")) # j4e2r3s3j2

推荐阅读