You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何按索引对应拼接两个字符串?多次尝试未成功求解决方案

解决按索引对应拼接两个字符串的问题

嘿,我来帮你搞定这个按索引对应拼接字符串的问题!你想要的效果是把两个字符串对应位置的字符先拼在一起,短的用完之后把长的剩下的直接接上对吧?看下面的解决方案:

完整实现代码

先给你一个可直接运行的Python函数,完美匹配你的示例需求:

def concat_corresponding(s1, s2):
    result = []
    # 同时遍历两个字符串的对应字符,直到较短的那个用完
    for char1, char2 in zip(s1, s2):
        result.append(char1 + char2)
    # 追加较长字符串的剩余部分
    if len(s1) > len(s2):
        result.append(s1[len(s2):])
    elif len(s2) > len(s1):
        result.append(s2[len(s1):])
    # 把所有片段合并成最终字符串
    return ''.join(result)

# 测试你的示例
print(concat_corresponding("12345", "6789XYZ"))  # 输出: 162738495XYZ

代码解释

  • 对应位置拼接:用zip(s1, s2)可以非常方便地同时遍历两个字符串的对应索引字符,zip会自动在较短的字符串遍历完后停止,刚好处理完所有对应位置的拼接。
  • 高效收集片段:用列表result来收集拼接后的小片段,比直接做字符串拼接效率更高(因为Python中字符串是不可变对象,每次拼接都会生成新的字符串对象,列表则是可变的,追加操作更高效)。
  • 处理剩余部分:判断哪个字符串更长,把超出短字符串长度的剩余部分直接追加到结果列表里。
  • 合并结果:最后用''.join(result)把列表里的所有片段合并成一个完整的字符串。

更简洁的写法

如果你喜欢更紧凑的代码,也可以这样写:

def concat_corresponding(s1, s2):
    min_length = min(len(s1), len(s2))
    # 处理对应索引的拼接部分
    paired_chars = [s1[i] + s2[i] for i in range(min_length)]
    # 处理剩余部分(其中一个字符串的剩余部分肯定是空的)
    remaining = s1[min_length:] + s2[min_length:]
    # 合并所有部分
    return ''.join(paired_chars + [remaining])

这个写法先计算两个字符串的最小长度,遍历索引完成对应位置拼接,再把两个字符串的剩余部分直接相加(因为较短的那个剩余部分是空字符串,不影响结果),最后合并即可。

内容的提问来源于stack exchange,提问作者Encode.to.code

火山引擎 最新活动