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

如何使用Python删除字符串中重复字符的首次出现

删除重复字符首次出现的实现方案

原代码问题分析

现有代码的逻辑是遍历字符串时仅保留首次出现的字符,自动过滤后续所有重复项,因此处理abcdea时会删除末尾重复的a,得到abcde,和要求的「删除重复字符的第一次出现、保留后续内容」逻辑完全相反。

正确实现思路

  • 先统计字符串中每个字符的总出现次数,确定哪些字符属于重复字符
  • 单独记录已经跳过首次出现的重复字符,避免后续遍历的时候重复跳过
  • 二次遍历原字符串,仅跳过重复字符的第一次出现,其余所有字符全部保留到结果中

实现代码

from collections import Counter

def remove_rep(x):
    # 统计每个字符的出现频次
    char_count = Counter(x)
    # 记录已经跳过首次出现的重复字符
    skipped = set()
    result = []
    for char in x:
        # 仅跳过重复字符的第一次出现
        if char_count[char] > 1 and char not in skipped:
            skipped.add(char)
            continue
        result.append(char)
    return ''.join(result)

# 测试
print(remove_rep('abcdea'))

运行上述代码输出结果为bcdea,符合预期。

无依赖实现版本

如果不想引入collections依赖,也可以手动统计字符频次:

def remove_rep(x):
    # 手动统计字符频次
    char_count = {}
    for char in x:
        char_count[char] = char_count.get(char, 0) + 1
    skipped = set()
    result = []
    for char in x:
        if char_count[char] > 1 and char not in skipped:
            skipped.add(char)
            continue
        result.append(char)
    return ''.join(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:06:04