题目:
示例:
分析:
这是LeetCode75 的第一道题目,是一道简单题,题目没那么复杂,就是给两个字符串,要这两个字符串你出一个字符我出一个字符来拼凑出一个新的字符串,如果其中一个字符串用完了则剩下部分全部由另一个字符串出.
我们可以使用两个指针分别指向word1和word2:
string res=""; //初始化返回结果为空字符串
int index1=0,index2=0; //index1为word1的下标,index2为word2的下标
这时候会有三种可能:
word1.size() == word2.size()
word1.size() > word2.size()
word1.size() < word2.size()
第一种可能是二者长度相同,则普通遍历即可,每次添加二者相同下标的元素,遍历结束则得到结果:
while(index1<word1.size()&&index2<word2.size()){
res+=word1[index1++];
res+=word2[index2++];
}
而第二种可能和第三种可能可以归为一类,即字符串长度不相同,则可以复用上面的代码,将二者长度相同的部分先加进res中,然后再将较长的字符串的剩余部分添加到res的后面:
if(index1!=word1.size()){
res.append(word1,index1,word1.size()-index1);
}
if(index2!=word2.size()){
res.append(word2,index2,word2.size()-index2);
}
完整代码+提交结果如下:
时间有点慢,但是我们可以进行优化,可以将while外的判断融入到while循环里,只需要分别判断word1和word2各自的下标是否越界,若是不越界则进行添加,越界则跳过,并且需要将循环条件中的与(&&)改成或(||).
第二版代码+提交结果如下: