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

如何实现从右到左交错两个字符串的Python函数?

修正交错字符串函数的实现

你的代码存在几个关键问题,导致无法正确返回预期的交错字符串:

  1. 函数内部直接用print输出片段,没有收集结果并返回字符串,反而返回了print函数对象,完全不符合函数的返回要求。
  2. 仅处理了两个字符串长度相同的情况,若输入字符串长度不同,会触发索引越界错误。

修正后的代码(匹配你的反转思路)

def interleave(s1: str, s2: str) -> str:
    rev_s1 = s1[::-1]
    rev_s2 = s2[::-1]
    result = []
    # 处理不同长度的字符串,取两者的最大长度遍历
    max_length = max(len(rev_s1), len(rev_s2))
    for i in range(max_length):
        # 先加入反转后s2的字符(如果存在)
        if i < len(rev_s2):
            result.append(rev_s2[i])
        # 再加入反转后s1的字符(如果存在)
        if i < len(rev_s1):
            result.append(rev_s1[i])
    # 将列表拼接为最终字符串返回
    return ''.join(result)

# 测试示例
print(interleave("1234", "5678"))  # 输出: 84736251

另一种可能的需求实现(若交错逻辑为s2原顺序 + s1从右到左)

如果题目要求的是保持s2的原顺序,同时从s1的右侧开始取字符交错(比如输入"1234"和"5678"时返回"54637281"),只需要调整反转的对象:

def interleave(s1: str, s2: str) -> str:
    rev_s1 = s1[::-1]
    result = []
    max_length = max(len(rev_s1), len(s2))
    for i in range(max_length):
        if i < len(s2):
            result.append(s2[i])
        if i < len(rev_s1):
            result.append(rev_s1[i])
    return ''.join(result)

print(interleave("1234", "5678"))  # 输出: 54637281

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:49:13