一、题目描述与要求
题目描述
给你两个字符串 word1
和 word2
。请你从 word1
开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。
返回 合并后的字符串 。
提示:
1 <= word1.length, word2.length <= 100
word1
和word2
由小写英文字母组成
示例
示例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
二、解题思路
根据题目描述,按照顺序将word1和word2进行合并,我们可以采取双指针的方法,也就是定义i和j分别用来访问两个字符串,按照顺序插入新字符串中,然后i++,j++,当有一个字符串访问完时,则将另一个字符串剩下的直接插入新字符串。
先定义合并后的字符串res,获取两个字符串的长度(用于判断是否遍历完),定义"双指针"i和j,设置合并后字符串的长度;
利用while循环判断是否对两个字符串遍历完,没遍历完时将两个字符串的字符依次添加到新字符串后面,遍历完其中一个时则将另一个剩下的元素依次存入字符串;
最后返回res即可。
三、具体代码
cpp
class Solution {
public:
string mergeAlternately(string word1, string word2) {
string res;
int len1=word1.size();//获取字符串1的长度
int len2=word2.size();//获取字符串2的长度
int i=0,j=0;//用于访问两个字符串
res.reserve(len1+len2);//定义结果字符串长度
while(i<len1||j<len2){
if(i<len1){
res.push_back(word1[i]);
i++;
}
if(j<len2){
res.push_back(word2[j]);
j++;
}
}
return res;
}
};