题目描述:
给你两个字符串 word1 和 word2 。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。
返回 合并后的字符串 。
问题分析:
我们可以直接选择利用双指针对问题进行模拟。(大体思路如下)
1.循环控制条件为:两个指针只要有其一小于其字符串禅读即可
2.利用两个if分支判断控制依次“插入”
代码:
class Solution {
//Time Complexity:O(M + N)
//Space Complexity:O(M + N)
public String mergeAlternately(String word1, String word2) {
int len1 = word1.length();
int len2 = word.length();
//定义双指针
int i = 0;
int j = 0;
//利用StringBuilder 定义结果集(StringBuilder效率更高)
StringBuilder res = new Stringbuilder();
while(i < len1 || j < len2) {
if (i < len1) {
res.append(word1.charAt(i));
i++;
}
if (j < len2) {
res.append(word2.charAt(j));
j++;
}
}
return res.toString();
}
}
补充小细节:
之所以选择StringBuilder去作为结果集,是因为其先对于String和StringBuffer效率更高。