一、題目描述與要求
1768. 交替合并字符串 - 力扣(LeetCode)
題目描述
給你兩個字符串?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
二、解題思路
根據(jù)題目描述,按照順序?qū)ord1和word2進行合并,我們可以采取雙指針的方法,也就是定義i和j分別用來訪問兩個字符串,按照順序插入新字符串中,然后i++,j++,當有一個字符串訪問完時,則將另一個字符串剩下的直接插入新字符串。
先定義合并后的字符串res,獲取兩個字符串的長度(用于判斷是否遍歷完),定義“雙指針”i和j,設置合并后字符串的長度;
利用while循環(huán)判斷是否對兩個字符串遍歷完,沒遍歷完時將兩個字符串的字符依次添加到新字符串后面,遍歷完其中一個時則將另一個剩下的元素依次存入字符串;
最后返回res即可。文章來源:http://www.zghlxwxcb.cn/news/detail-725166.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-725166.html
三、具體代碼
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;
}
};
到了這里,關于Leetcode 75——1768.交替合并字符串 解題思路與具體代碼【C++】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!