1768.交替合并字符串
2024年1月12日...大约 2 分钟
问题
给你两个字符串 word1
和 word2
。请你从 word1
开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。
返回 合并后的字符串 。
示例 1:
输入:word1 = "abc", word2 = "pqr"
输出:"apbqcr"
解释:字符串合并情况如下所示:
word1: a b c
word2: p q r
合并后: a p b q c r
示例 2:
输入:word1 = "ab", word2 = "pqrs"
输出:"apbqrs"
解释:注意,word2 比 word1 长,"rs" 需要追加到合并后字符串的末尾。
word1: a b
word2: p q r s
合并后: a p b q r s
示例 3:
输入: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
word1
和word2
由小写英文字母组成
答案
js代码
function mergeAlternately(word1, word2) {
let result = [];
let i = 0, j = 0;
const len1 = word1.length, len2 = word2.length;
// 交替添加字符
while (i < len1 || j < len2) {
if (i < len1) {
result.push(word1[i]);
i++;
}
if (j < len2) {
result.push(word2[j]);
j++;
}
}
// 将数组转换为字符串
return result.join('');
}
代码说明
- 初始化:
- 使用两个指针
i
和j
分别遍历word1
和word2
。 - 使用一个数组
result
来存储合并后的字符。
- 使用两个指针
- 交替添加字符:
- 如果
i
没有超出word1
的长度,将word1[i]
添加到result
中,并移动指针i
。 - 如果
j
没有超出word2
的长度,将word2[j]
添加到result
中,并移动指针j
。
- 如果
- 处理剩余字符:
- 如果其中一个字符串比另一个长,剩余的字符会直接追加到
result
中。
- 如果其中一个字符串比另一个长,剩余的字符会直接追加到
- 返回结果:
- 使用
result.join('')
将数组转换为字符串并返回。
- 使用
示例运行
// 示例 1
console.log(mergeAlternately("abc", "pqr")); // 输出: "apbqcr"
// 示例 2
console.log(mergeAlternately("ab", "pqrs")); // 输出: "apbqrs"
// 示例 3
console.log(mergeAlternately("abcd", "pq")); // 输出: "apbqcd"
复杂度分析
- 时间复杂度:
O(n + m)
,其中n
是word1
的长度,m
是word2
的长度。我们需要遍历两个字符串的所有字符。 - 空间复杂度:
O(n + m)
,用于存储结果字符串。
Powered by Waline v3.4.1