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

字符串交替拼接:首串更长时末尾字符重复的Bug修复求助

问题分析与修复

你的代码出现重复字符的问题,核心原因是:当i超出较短字符串的长度时,try块里已经成功将较长字符串的words1[i]添加到了result中,随后触发IndexError进入except块时,又错误地再次添加了该字符(通过words1[-remainingWords]),导致重复。

以你的测试用例为例:i=5时,words1[5](字符b)已经被加入result,但except块里又追加了一次b,最终结果多了一个重复的字符。


修复方案

方案一:修正原有代码逻辑

调整except块的处理逻辑,不再重复添加已成功加入的字符,而是直接追加剩余的子串,完成后跳出循环避免重复处理:

words1 = "rmiiab"
words2 = "eanna"
maxLength = max(len(words1), len(words2))
result = []

for i in range(maxLength):
    try:
        result.append(words1[i])
        result.append(words2[i])
    except IndexError:
        # 追加剩余子串后直接终止循环
        if len(words1) > len(words2):
            result.extend(words1[i+1:])
        else:
            result.extend(words2[i+1:])
        break

print(''.join(result))

方案二:更简洁高效的实现

放弃try-except的容错方式,先处理两个字符串的公共长度部分完成交替拼接,再直接追加较长字符串的剩余部分,逻辑更清晰直观:

words1 = "rmiiab"
words2 = "eanna"
result = []
min_len = min(len(words1), len(words2))

# 处理公共长度的交替拼接
for i in range(min_len):
    result.append(words1[i])
    result.append(words2[i])

# 追加剩余部分
if len(words1) > min_len:
    result.append(words1[min_len:])
elif len(words2) > min_len:
    result.append(words2[min_len:])

print(''.join(result))

两种方案运行后,测试用例都会输出正确结果remaininaab。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:23:07