LeetCode 1754. Largest Merge Of Two Strings
You are given two strings?word1
?and?word2
. You want to construct a string?merge
?in the following way: while either?word1
?or?word2
?are non-empty, choose?one?of the following options:
If?
word1
?is non-empty, append the?first?character in?word1
?to?merge
?and delete it from?word1
.For example, if?
word1 = "abc"?
and?merge = "dv"
, then after choosing this operation,?word1 = "bc"
?and?merge = "dva"
.If?
word2
?is non-empty, append the?first?character in?word2
?to?merge
?and delete it from?word2
.For example, if?
word2 = "abc"?
and?merge = ""
, then after choosing this operation,?word2 = "bc"
?and?merge = "a"
.
Return?the lexicographically?largest?merge
?you can construct.
A string?a
?is lexicographically larger than a string?b
?(of the same length) if in the first position where?a
?and?b
?differ,
?a
?has a character strictly larger than the corresponding character in?b
.?
For example,?"abcd"
?is lexicographically larger than?"abcc"
?
because the first position they differ is at the fourth character, and?d
?is greater than?c
.
?
Example 1:
Input: word1 = "cabaa", word2 = "bcaaa"
Output: "cbcabaaaaa"
Explanation:?
One way to get the lexicographically largest merge is:?
- Take from word1: merge = "c", word1 = "abaa", word2 = "bcaaa"?
- Take from word2: merge = "cb", word1 = "abaa", word2 = "caaa"?
- Take from word2: merge = "cbc", word1 = "abaa", word2 = "aaa"?
- Take from word1: merge = "cbca", word1 = "baa", word2 = "aaa"?
- Take from word1: merge = "cbcab", word1 = "aa", word2 = "aaa"?
- Append the remaining 5 a's from word1 and word2 at the end of merge.
Example 2:
Input: word1 = "abcabc", word2 = "abdcaba"
Output: "abdcabcabcaba"
?
Constraints:
1 <= word1.length, word2.length <= 3000
word1
?and?word2
?consist only of lowercase English letters.
Accepted
18,107
Submissions
39,373
Seen this question in a real interview before?
Yes
No
Companies
Related Topics
Similar Questions
Hide Hint 1
Build the result character by character. At each step, you choose a character from one of the two strings.
Hide Hint 2
If the next character of the first string is larger than that of the second string, or vice versa, it's optimal to use the larger one.
Hide Hint 3
If both are equal, think of a criteria that lets you decide which string to consume the next character from.
Hide Hint 4
You should choose the next character from the larger string.
Problems
Pick One
基本類似于歸并排序,只是第一次沒(méi)過(guò)的時(shí)候,卡在了當(dāng)2個(gè)字符相等的時(shí)候,
這時(shí)候需要去比對(duì)2個(gè)字符串的大小,先取大的字符串的信息;
Runtime:?40 ms, faster than?83.48%?of?Java?online submissions for?Largest Merge Of Two Strings.
Memory Usage:?42.4 MB, less than?99.13%?of?Java?online submissions for?Largest Merge Of Two Strings.