Skip to content

1768. Merge Strings Alternately

Solve in Leetcode


Description

Static Badge

You are given two strings word1 and word2. Merge the strings by adding letters in alternating order, starting with word1. If a string is longer than the other, append the additional letters onto the end of the merged string.

Return the merged string.

Example 1

  • Input: word1 = "abc", word2 = "pqr"
  • Output: "apbqcr"
  • Explanation: The merged string will be merged as so:
    word1:  a   b   c
    word2:    p   q   r
    merged: a p b q c r
    

Example 2

  • Input: word1 = "ab", word2 = "pqrs"
  • Output: "apbqrs"
  • Explanation: Notice that as word2 is longer, "rs" is appended to the end.
    word1:  a   b
    word2:    p   q   r   s
    merged: a p b q   r   s
    

Example 3

  • Input: word1 = "abcd", word2 = "pq"
  • Output: "apbqcd"
  • Explanation: Notice that as word1 is longer, "cd" is appended to the end.
    word1:  a   b   c   d
    word2:    p   q
    merged: a p b q c   d
    

Constraints

  • 1 <= word1.length, word2.length <= 100
  • word1 and word2 consist of lowercase English letters.

Solution: Single Iteration Approach

  • Time Complexity: O(n), where n is the length of the longest string between word1 and word2.
  • Space Complexity: O(1)
  • The solution is to iterate over the longest string between word1 and word2 and merge the strings by adding letters in alternating order.
function mergeAlternately(word1: string, word2: string): string {
    if (word1.length <= 0) {
        return word2;
    }

    if (word2.length <= 0) {
        return word1;
    }

    const longest = Math.max(word1.length, word2.length);
    let merged = "";

    for(var i = 0; i < longest; i++) {
        merged += word1[i] || "";
        merged += word2[i] || "";
    }

    return merged;
};