---
# System prepended metadata

title: 1768. Merge Strings Alternately
tags: [LeetCode75, JavaScript, Easy, Array/String]

---

給定兩個字符串 word1 和 word2，請將它們按照交替的方式合併形成一個新的字符串。合併的方式是將 word1 和 word2 的字符交替地從頭開始取出，如果其中一個字符串的字符用完了，則直接將另一個字符串的剩餘字符全部加入到新的字符串中。返回合併後的新字符串。


思考:
如何在一個迴圈內循環放入
1.決定最大執行次數 i
2.因為程式是由上而下執行 先放word1再放word2
3.如果 i 還小於 word1和word2的size();就放入
4.C++中有string, string ans = ""; 可以用+=合併字串

```c++=
class Solution {
public:
    string mergeAlternately(string word1, string word2) {
        string ans = "";
        //要做最多 max(m, n) 次
        int n = word1.size();
        int m = word2.size();
        int maxTime = max(n, m);
        for(int i = 0; i < maxTime; i++){
            //從word1開始放 注意用word1[i], word2[i]的原因 m, n不用前進
            if(i < n){
                //如果還有word1
                ans += word1[i];
            }
            if(i < m){
                ans += word2[i];
            }
        }
        return ans;
    }
};
```


```=

/**
 * @param {string} word1
 * @param {string} word2
 * @return {string}
 */
var mergeAlternately = function(word1, word2) {
    let n = word1.length;
    let m = word2.length;
    let ans = "";
    let ptr1 = 0;
    let ptr2 = 0;
    
    for(let i = 0; i < (m + n); i++){
        if(ptr1 < n){
            ans += word1[ptr1];
            ptr1++;
        }
        if(ptr2 < m){
            ans += word2[ptr2];
            ptr2++;
        }
    }
    
    return ans;
};
```


```=
/**
 * @param {string} word1
 * @param {string} word2
 * @return {string}
 */
var mergeAlternately = function(word1, word2) {
    let n = word1.length;
    let m = word2.length;
    let ans = [];
    let ptr1 = 0;
    let ptr2 = 0;
    
    for(let i = 0; i < (m + n); i++){
        if(ptr1 < n){
            ans.push(word1[ptr1]);
            ptr1++;
        }
        if(ptr2 < m){
            ans.push(word2[ptr2]);
            ptr2++;
        }
    }
    ans = ans.join('');
    
    return ans;
};

```