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

Python实现字符串相邻去重报索引越界,输入rooobert得robert如何解决

报错根因

  • 你初始化循环范围range(0, len(n)-1)时,是基于输入字符串的初始长度计算的固定值,但循环过程中调用n.remove()会不断缩短列表的实际长度,后续循环的索引i超过当前列表的最大索引时就会触发越界错误
  • 额外逻辑问题:list.remove()会删除列表中第一个匹配的元素,即使解决越界问题,遇到非连续重复字符、连续重复次数大于2的场景时也无法得到正确结果

修复方案

方案1:新增结果列表存储(逻辑最直观,无索引问题)

遍历原字符串,逐个判断是否和结果列表最后一位重复,不重复才存入:

n = input()
res = []
for char in n:
    if res and res[-1] == char:
        continue
    res.append(char)
print(''.join(res))

输入rooobert时,输出为预期的robert。

方案2:在原列表上修改(适合需要操作原列表的场景)

用while循环动态判断列表长度,匹配到重复字符时不递增索引,避免漏判多次重复的场景:

n = list(input())
i = 0
while i < len(n) - 1:
    if n[i] == n[i+1]:
        del n[i]
    else:
        i += 1
print(''.join(n))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:39:03