跳到主要内容

1754.构造字典序最大的合并字符串

链接:1754.构造字典序最大的合并字符串
难度:Medium
标签:贪心、双指针、字符串
简介:返回你可以构造的字典序 最大 的合并字符串 merge 。

题解 1 - cpp

  • 编辑时间:2022-12-24
  • 执行用时:8ms
  • 内存消耗:9.3MB
  • 编程语言:cpp
  • 解法介绍:后缀比较。
class Solution {
public:
string largestMerge(string word1, string word2) {
string ans = "";
int i1 = 0, i2 = 0, n1 = word1.size(), n2 = word2.size();
function<bool(int, int)> check = [&](int i1, int i2) -> bool {
while (i1 < n1 && i2 < n2 && word1[i1] == word2[i2]) i1++, i2++;
if (i2 == n2 && i1 == n1) return true;
if (i2 == n2 && i1 != n1) return true;
if (i2 != n2 && i1 == n1) return false;
return word1[i1] > word2[i2];
};
while (i1 < n1 || i2 < n2) {
if (i2 == n2 || word1[i1] > word2[i2]) ans += word1[i1++];
else if (i1 == n1 || word1[i1] < word2[i2]) ans += word2[i2++];
else {
bool f = check(i1, i2);
while (i1 < n1 && i2 < n2 && word1[i1] == word2[i2])
if (f) ans += word1[i1++];
else ans += word2[i2++];
}
}
return ans;
}
};