Leetcode 1768.交替合并字符串
题目描述:
给定两个字符串 word1
和 word2
,以交替的方式将它们合并成一个新的字符串。即,第一个字符来自 word1
,第二个字符来自 word2
,第三个字符来自 word1
,依此类推。如果一个字符串的长度不等于另一个字符串,剩余的字符应该直接添加到合并后的字符串的末尾。
示例 1:
输入: word1 = "abc", word2 = "pqr"
输出: "apbqcr"
示例 2:
输入: word1 = "ab", word2 = "pqrs"
输出: "apbqrs"
示例 3:
输入: word1 = "abcd", word2 = "pq"
输出: "apbqcdd"
提示:
1 <= word1.length, word2.length <= 100
word1
和word2
都只包含小写字母。
Java 实现代码
public class Solution {public String mergeAlternately(String word1, String word2) {StringBuilder result = new StringBuilder();int i = 0, j = 0;// 交替合并while (i < word1.length() && j < word2.length()) {result.append(word1.charAt(i++));result.append(word2.charAt(j++));}// 如果 word1 还有剩余字符,直接添加while (i < word1.length()) {result.append(word1.charAt(i++));}// 如果 word2 还有剩余字符,直接添加while (j < word2.length()) {result.append(word2.charAt(j++));}return result.toString();}
}
解题思路:
本题要求交替合并两个字符串,可以通过以下步骤来实现:
- 初始化两个指针:一个指针分别指向
word1
和word2
的起始位置。- 交替合并:使用循环交替从
word1
和word2
中取出字符加入到结果字符串中,直到其中一个字符串遍历完。- 处理剩余字符:如果某个字符串未完全遍历完,将剩余的字符直接添加到结果中。
具体步骤:
- 创建一个空的字符串
result
用于存储合并的结果。- 使用两个指针分别遍历
word1
和word2
。- 当两个字符串都未遍历完时,交替地将它们的字符加入
result
。- 如果一个字符串已经遍历完,直接将另一个字符串的剩余部分添加到结果中。
复杂度分析:
- 时间复杂度:O(m + n),其中
m
和n
分别是word1
和word2
的长度,因为我们需要遍历两个字符串的所有字符。- 空间复杂度:O(m + n),用于存储合并后的结果字符串。