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

Python字符串去重求助:避开not in、set及C++无特性的函数故障排查

问题分析与修复方案

首先咱们来拆解下你的代码里的几个核心问题:

1. find函数无返回值,导致判断逻辑完全失效

你写的find函数只会修改全局变量key,但本身没有return语句——这意味着当你执行b = find(a[i])时,b永远是None。接下来调用find1(b)自然一直返回True,不管字符是否重复,都会执行match += a[i],这就是为什么输出要么带多余的0、要么和输入几乎一致的原因。

2. 初始值match = '0'不符合需求

你要实现的是输入字符串的去重,初始给match赋值'0'会导致最终结果凭空多一个无关字符,这显然偏离了你的目标。

3. 全局变量key的使用冗余且易出错

这种小逻辑里用全局变量完全没必要,反而会让代码逻辑变得混乱,咱们可以改成函数返回值的方式,更贴近C的编程习惯(C里很少用全局变量做这类判断)。


修复后的代码

严格按照你的要求,避开not in、set(),用类似C++的遍历判断逻辑实现:

def is_char_exist(char, target_str):
    # 模拟C++风格的遍历检查:字符存在返回True,否则返回False
    for c in target_str:
        if c == char:
            return True
    return False

input_str = str(input())
result = ""
for char in input_str:
    if not is_char_exist(char, result):
        result += char
print(result)

代码说明

  • is_char_exist函数:逐个遍历目标字符串的字符,找到匹配项就立即返回True,遍历结束未找到则返回False,完全是C++里手动检查元素的思路。
  • 初始result设为空字符串,确保最终结果只包含输入字符串里的去重字符。
  • 遍历输入的每个字符,只有当字符未在result中出现过时才添加进去,完美实现去重需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:16:04