1768. Merge Strings Alternately
On This Page
The task is to merge two strings alternately, i.e., take one character from the first string, then one from the second, then again from the first, and so on. If one string finishes before the other, the remaining characters from the longer string are appended at the end.
A naive approach could involve maintaining two pointers, one for each string, and incrementally appending characters from each string to the result. Once we reach the end of one string, we append the rest of the other string to the result. However, this approach involves checking for the end of strings in each step which can be optimized.
A more pythonic and efficient approach would be to use the built-in
zip function. The
zip function pairs the elements of two lists (or strings, in this case) until the shorter one ends. This allows us to alternately merge the two strings efficiently. After that, we append the remaining part of the longer string, if any.
Here are the high-level steps of the algorithm:
- Use the
zipfunction to merge the two strings until one of them ends.
- Append the remaining part of the longer string to the result.
Here is a Python solution that implements the above algorithm:
class Solution: def mergeAlternately(self, word1: str, word2: str) -> str: i=0 j=0 res = '' while i<len(word1) and j<len(word2): res += word1[i] res += word2[j] i+=1 j+=1 for _i, word in [[i,word1], [j,word2]]: while _i<len(word): res += word[_i] _i+=1 return res
class Solution: def mergeAlternately(self, word1: str, word2: str) -> str: res = [c1 + c2 for c1, c2 in zip(word1, word2)] return "".join(res) + word1[len(res):] + word2[len(res):]
mergeAlternately method, we use list comprehension and the zip function to merge the strings until one of them ends. We then append the remaining part of the longer string to the result. The join method is used to convert the list of characters into a string.