You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

统计连续字符的高效实现方法:求现有代码的替代方案

连续字符统计的其他实现方法

针对你给出的字符统计需求(输入示例:33 P DDD AA 00 23),除了手动循环的实现方式,还有以下几种更简洁高效的替代方案:

方法一:使用itertools.groupby

Python标准库的itertools.groupby专门用于分组连续重复的元素,代码可读性和简洁性都很强:

from itertools import groupby

def count_consecutive_chars(t, translate_dict):
    result = []
    for char, group in groupby(t):
        count = len(list(group))
        translated = translate_dict.get(char, char)
        result.append(f"{translated}{count}")
    return ''.join(result)

方法二:使用正则表达式

利用正则匹配连续重复的字符,再通过替换函数完成转换和计数:

import re

def count_consecutive_chars(t, translate_dict):
    def process_match(match):
        char = match.group()[0]
        translated = translate_dict.get(char, char)
        return f"{translated}{len(match.group())}"
    return re.sub(r'(.)\1*', process_match, t)

方法三:简化版单循环实现

在你原有逻辑基础上简化,用单循环替代嵌套while,可读性更好:

def count_consecutive_chars(t, translate_dict):
    if not t:
        return ""
    result = []
    current_char = t[0]
    counter = 1
    for char in t[1:]:
        if char == current_char:
            counter += 1
        else:
            result.append(f"{translate_dict.get(current_char, current_char)}{counter}")
            current_char = char
            counter = 1
    # 处理最后一组字符
    result.append(f"{translate_dict.get(current_char, current_char)}{counter}")
    return ''.join(result)

以上方法都能实现和你现有代码一致的功能,其中itertools.groupby是最贴合Python风格的选择,正则表达式则适合偏好模式匹配的场景。

内容的提问来源于stack exchange,提问作者Samuele1818

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 13:23:20