1 minute read

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.

/**
 * @param {string} word1
 * @param {string} word2
 * @return {string}
 */
var mergeAlternately = function (word1, word2) {
  // Initialize an array to store the merged characters
  const merged = [];

  // Initialize pointers for each word
  let left = 0;
  let right = 0;

  // Continue merging until at least one of the words is fully processed
  while (left < word1.length || right < word2.length) {
    // If there are remaining characters in word1, add them to merged
    if (word1[left]) {
      merged.push(word1[left]);
      left++;
    }

    // If there are remaining characters in word2, add them to merged
    if (word2[right]) {
      merged.push(word2[right]);
      right++;
    }
  }

  // Join the merged array into a single string and return the result
  return merged.join("");
};

Time Complexity: The time complexity of this code is O(max(n, m)), where n is the length of word1 and m is the length of word2. The loop iterates until at least one of the words is fully processed.

Space Complexity: The space complexity is O(n + m), where n is the length of word1 and m is the length of word2. The additional space is used to store the characters in the merged array. In the worst case, both words are fully merged into the merged array.

Leave a comment