[LeetCode] 1768. 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.

交替合并字符串。

给你两个字符串 word1 和 word2 。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。

返回 合并后的字符串。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/merge-strings-alternately
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

这道题考察字符串的基本操作。我直接给代码。

复杂度

时间O(m+n) - 需要合并两个字符串
空间O(m+n) - 最后返回的字符串长度

代码

Java实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Solution {
public String mergeAlternately(String word1, String word2) {
// corner case
if (word1 == null || word1.length() == 0) {
return word2;
}
if (word2 == null || word2.length() == 0) {
return word1;
}

// normal case
StringBuilder sb = new StringBuilder();
int m = word1.length();
int n = word2.length();
int i = 0;
int j = 0;
while (i < m || j < n) {
if (i < m) {
sb.append(word1.charAt(i++));
}
if (j < n) {
sb.append(word2.charAt(j++));
}
}
return sb.toString();
}
}

[LeetCode] 1768. Merge Strings Alternately
https://shurui91.github.io/posts/493219565.html
Author
Aaron Liu
Posted on
October 23, 2022
Licensed under