[ LeetCode 75 ] 1768. 交替合并字符串

发布于:2025-02-10 ⋅ 阅读:(29) ⋅ 点赞:(0)

题目描述:(相关标签:双指针、字符串

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

示例 1:
输入:word1 = “abc”, word2 = “pqr”
输出:“apbqcr”
解释:字符串合并情况如下所示:
word1: a b c
word2: p q r
合并后: a p b q c r

解题思路:

  1. 初始化指针:使用两个指针分别指向两个字符串的当前字符位置。
  2. 交替取字符:交替从两个字符串中取字符,并将其添加到结果字符串中。
  3. 处理剩余字符:如果一个字符串比另一个长,继续将较长字符串中的剩余字符添加到结果中。
  4. 返回结果:最终返回合并后的字符串。

具体步骤:

  1. 初始化结果数组:使用一个数组 result 来存储交替合并的字符。
  2. 计算长度:获取两个字符串的长度,并计算最小长度。
  3. 交替合并:通过循环遍历最小长度,依次从 word1 和 word2 中取字符并添加到 result 中
  4. 处理剩余字符:使用 slice 方法将剩余的字符添加到结果中。
  5. 返回结果:使用 join 方法将数组转换为字符串并返回。

代码实现:

/**
 * @param {string} word1
 * @param {string} word2
 * @return {string}
 */
function mergeAlternately(word1, word2) {
  // 1. 初始化结果数组
  let result = [];

  // 2. 获取两个字符串的长度, 并计算最小长度
  let len1 = word1.length;
  let len2 = word2.length;
  let minLen = Math.min(len1, len2);

  // 3. 通过循环遍历最小长度,交替添加字符到结果数组中
  for (let i = 0; i < minLen; i++) {
    result.push(word1[i]);
    result.push(word2[i]);
  }

  // 5. 处理剩余的字符
  if (len1 > minLen) {
    result.push(word1.slice(minLen));
  }
  if (len2 > minLen) {
    result.push(word2.slice(minLen));
  }

  // 6. 将结果数组转换为字符串并返回
  return result.join('');
}

// 示例用法
console.log(mergeAlternately("abc", "pqr")); // 输出 "apbqcr"
console.log(mergeAlternately("ab", "pqrs")); // 输出 "apbqrs"
console.log(mergeAlternately("abcd", "pq")); // 输出 "apbqcd"

网站公告

今日签到

点亮在社区的每一天
去签到