字符串字符替换问题:重复字符转')'单次转'(',代码故障求助
问题解决:字符重复替换为括号
原代码的问题
你的代码存在几个关键错误,导致无法实现需求:
- 语法错误:
string str是无效的Python语句,正确的变量赋值应该是类似string = s(注意不要用str做变量名,它是Python内置类型)。 - 逻辑缺失:完全没有统计每个字符的出现次数,只是生成了和原字符串长度相同的全
(字符串,根本没处理重复字符的判断逻辑。 - 拼写错误:
count letter应该是count_letter(下划线连接)。
正确实现代码
要实现需求,核心是先统计每个字符的出现次数,再根据次数替换字符:
def change_str(s): # 统计每个字符的出现次数 char_count = {} for char in s: char_count[char] = char_count.get(char, 0) + 1 # 遍历生成结果字符串 result = [] for char in s: result.append('(' if char_count[char] == 1 else ')') return ''.join(result) # 测试示例 print(change_str("din")) # 输出: ((( print(change_str("recede")) # 输出: ()()() print(change_str("received")) # 输出: ()()((()
代码说明
- 统计字符次数:用字典
char_count遍历原字符串,记录每个字符出现的次数。char_count.get(char, 0)表示如果字符不在字典里,就返回0,再加1实现计数。 - 生成结果:再次遍历原字符串,对每个字符查字典里的次数,出现1次就加
(,否则加)。用列表收集结果再join,比直接字符串拼接效率更高。 - 返回结果:最后把列表转为字符串返回,方便后续使用或打印。
内容的提问来源于stack exchange,提问作者Ariky Hito
相关产品推荐
相关产品推荐

