2023-04-18 Daily Challenge

Today I have done leetcode's April LeetCoding Challenge with cpp.

April LeetCoding Challenge 18

Description

Merge Strings Alternately

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

class Solution {
public:
  string mergeAlternately(string word1, string word2) {
    int len1 = word1.length();
    int len2 = word2.length();
    int pos = 0;

    string answer;
    answer.reserve(len1 + len2);
    for(; pos < len1 && pos < len2; ++pos) {
      answer.push_back(word1[pos]);
      answer.push_back(word2[pos]);
    }
    for(; pos < len1; ++pos) {
      answer.push_back(word1[pos]);
    }
    for(; pos < len2; ++pos) {
      answer.push_back(word2[pos]);
    }

    return answer;
  }
};

// Accepted
// 108/108 cases passed (0 ms)
// Your runtime beats 100 % of cpp submissions
// Your memory usage beats 60.87 % of cpp submissions (6.4 MB)