交替合并字符串:Java解法详解
来源:交替合并字符串
题目
给你两个字符串 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
由小写英文字母组成
详解
将两个字符串 word1
和 word2
交替合并成一个新的字符串。我们将使用 StringBuilder
来提高性能,并使用 charAt
方法来获取字符串中的字符。
思路
-
获取字符串长度:首先获取
word1
和word2
的长度,分别存储在变量a
和b
中。 -
创建 StringBuilder 对象:创建一个
StringBuilder
对象sb
,用于存储合并后的字符串。使用StringBuilder
可以提高性能,因为它是可变的,多次修改不会生成新的对象。 -
遍历字符串:使用一个
for
循环遍历两个字符串。循环的次数是两个字符串长度中的较大值,即Math.max(a, b)
。 -
交替添加字符:
- 在每次循环中,首先检查当前索引
i
是否小于word1
的长度a
。如果是,则使用charAt(i)
方法获取word1
中的字符,并将其添加到sb
中。 - 然后,检查当前索引
i
是否小于word2
的长度b
。如果是,则使用charAt(i)
方法获取word2
中的字符,并将其添加到sb
中。
- 在每次循环中,首先检查当前索引
-
返回结果:循环结束后,将
StringBuilder
对象转换为字符串并返回。
完整代码
public class Solution {
public String mergeAlternately(String word1, String word2) {
int a = word1.length();
int b = word2.length();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < Math.max(a, b); i++) {
if (i < a) {
sb.append(word1.charAt(i));
}
if (i < b) {
sb.append(word2.charAt(i));
}
}
return sb.toString();
}
public static void main(String[] args) {
Solution solution = new Solution();
String word1 = "abc";
String word2 = "defg";
String result = solution.mergeAlternately(word1, word2);
System.out.println(result); // 输出 "adbecf"
}
}
收起
解释
- 获取长度:
int a = word1.length();
和int b = word2.length();
分别获取word1
和word2
的长度。 - StringBuilder:
StringBuilder sb = new StringBuilder();
创建一个StringBuilder
对象。 - 循环遍历:
for (int i = 0; i < Math.max(a, b); i++)
遍历两个字符串的长度中的较大值次。 - 交替添加字符:在循环中,使用
charAt(i)
方法获取字符,并使用sb.append()
方法添加到StringBuilder
中。 - 返回结果:
return sb.toString();
将StringBuilder
转换为字符串并返回。
这个方法能够有效地将两个字符串交替合并,并返回合并后的结果。