算法练习-Day1-交替合并字符串

给你两个字符串 word1word2 。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。

返回 合并后的字符串

示例 1:

css 复制代码
输入: word1 = "abc", word2 = "pqr"
输出: "apbqcr"
解释: 字符串合并情况如下所示:
word1:  a   b   c
word2:    p   q   r
合并后:  a p b q c r

示例 2:

css 复制代码
输入: word1 = "ab", word2 = "pqrs"
输出: "apbqrs"
解释: 注意,word2 比 word1 长,"rs" 需要追加到合并后字符串的末尾。
word1:  a   b 
word2:    p   q   r   s
合并后:  a p b q   r   s

示例 3:

css 复制代码
输入: word1 = "abcd", word2 = "pq"
输出: "apbqcd"
解释: 注意,word1 比 word2 长,"cd" 需要追加到合并后字符串的末尾。
word1:  a   b   c   d
word2:    p   q 
合并后:  a p b q c   d

提示:

  • 1 <= word1.length, word2.length <= 100
  • word1word2 由小写英文字母组成

解答:

  1. 这个是当时学Python时写的(注释是D老师生成的)
python 复制代码
class Solution(object):
    def mergeAlternately(self, word1, word2):
        """
        :type word1: str
        :type word2: str
        :rtype: str
        """
        loop_count = 0  # 初始化循环计数器
        rStr = ''       # 初始化结果字符串

        # 情况1:word1 和 word2 长度相等
        if len(word1) == len(word2):
            while loop_count < len(word1):
                # 交替拼接 word1 和 word2 的字符
                rStr += (word1[loop_count] + word2[loop_count])
                loop_count += 1  # 计数器递增

        # 情况2:word1 比 word2 短
        if len(word1) < len(word2):
            rest_str = word2[len(word1):]  # 截取 word2 剩余的部分
            while loop_count < len(word1):
                # 交替拼接 word1 和 word2 的字符
                rStr += (word1[loop_count] + word2[loop_count])
                loop_count += 1
            rStr += rest_str  # 拼接 word2 剩余的部分

        # 情况3:word1 比 word2 长
        if len(word1) > len(word2):
            rest_str = word1[len(word2):]  # 截取 word1 剩余的部分
            while loop_count < len(word2):
                # 交替拼接 word1 和 word2 的字符
                rStr += (word1[loop_count] + word2[loop_count])
                loop_count += 1
            rStr += rest_str  # 拼接 word1 剩余的部分

        return "".join(rStr)  # 返回最终结果(这里直接返回 rStr 即可,无需用 join)
  1. 这个是今天写的(注释是D老师生成的)
js 复制代码
var mergeAlternately = function(word1, word2) {
    var len1 = word1.length,  // 获取 word1 的长度
        len2 = word2.length;  // 获取 word2 的长度
    var min = len1 < len2 ? len1 : len2;  // 计算两字符串的最小长度
    var r_str = '';  // 初始化结果字符串

    // 交替拼接两字符串的前 min 个字符
    for(i = 0; i < min; i++) {
        r_str += word1[i] + word2[i];  // 拼接 word1 和 word2 的当前字符
    }

    // 拼接 word1 剩余的部分(如果有)
    r_str += word1.slice(min, len1);
    // 拼接 word2 剩余的部分(如果有)
    r_str += word2.slice(min, len2);

    return r_str;  // 返回最终结果
};
相关推荐
leiming65 小时前
C++ vector容器
开发语言·c++·算法
Xの哲學6 小时前
Linux流量控制: 内核队列的深度剖析
linux·服务器·算法·架构·边缘计算
多看书少吃饭7 小时前
从Vue到Nuxt.js
前端·javascript·vue.js
前端一小卒7 小时前
从 v5 到 v6:这次 Ant Design 升级真的香
前端·javascript
yaoh.wang7 小时前
力扣(LeetCode) 88: 合并两个有序数组 - 解法思路
python·程序人生·算法·leetcode·面试·职场和发展·双指针
前端不太难8 小时前
《Vue 项目路由 + Layout 的最佳实践》
前端·javascript·vue.js
LYFlied8 小时前
【每日算法】 LeetCode 56. 合并区间
前端·算法·leetcode·面试·职场和发展
艾醒8 小时前
大模型原理剖析——多头潜在注意力 (MLA) 详解
算法
艾醒8 小时前
大模型原理剖析——DeepSeek-V3深度解析:671B参数MoE大模型的技术突破与实践
算法
想学后端的前端工程师8 小时前
【Vue3组合式API实战指南:告别Options API的烦恼】
前端·javascript·vue.js