求编写实现DNA字符串特定连续字符编码的Python代码
DNA字符串游程编码实现
需求说明
对DNA字符串执行游程编码,规则如下:
- 连续重复的相同字符,若重复次数大于1,编码为「重复次数+字符」
- 若重复次数为1,直接保留原字符
示例
示例1:
input_string = "AAABCCCCDDA" output_string = "3AB4C2DA"
示例2:
input_string = "ABBBBCCDDDDAAAAA" output_string = "A4B2C4D5A"
Python实现代码
利用itertools.groupby高效处理连续重复字符分组,代码如下:
import itertools def dna_encode(input_str): encoded = [] for char, group in itertools.groupby(input_str): count = len(list(group)) encoded.append(f"{count}{char}" if count > 1 else char) return ''.join(encoded) # 测试示例 if __name__ == "__main__": test1 = "AAABCCCCDDA" print(dna_encode(test1)) # 输出: 3AB4C2DA test2 = "ABBBBCCDDDDAAAAA" print(dna_encode(test2)) # 输出: A4B2C4D5A
代码说明
itertools.groupby(input_str)将字符串中连续相同的字符分组,返回每组的字符及对应迭代器- 通过
len(list(group))统计每组字符的重复次数 - 根据次数选择编码格式,用列表存储片段(列表拼接比字符串累加效率更高)
- 最后通过
''.join(encoded)生成最终编码字符串
内容的提问来源于stack exchange,提问作者Seth
相关产品推荐
相关产品推荐

