LeetCode 5674. 構造字典序最大的合併字串
阿新 • • 發佈:2021-02-08
技術標籤:LeetCode
文章目錄
1. 題目
2. 解題
- 遇到相同的字元,要往後找到能分出大小的位置,若一個已經到達末尾,則選擇另一個
class Solution {
public:
string largestMerge(string word1, string word2) {
int n1 = word1.size(), n2 = word2.size(), i = 0, j = 0;
string ans;
ans.reserve(n1+n2);
while(i < n1 || j < n2)
{
if(i < n1 && j < n2 && word1[i] > word2[j])
ans.push_back(word1[i++]);
else if(i < n1 && j < n2 && word1[i] < word2[j])
ans.push_back(word2[j++]);
else if(i < n1 && j < n2 && word1[i] == word2[j])
{ //相等的情況下,往後找到不相等的
int k1 = i, k2 = j;
while(k1 < n1 && k2 < n2 && word1[k1] == word2[k2])
k1++, k2++;
if((k1 < n1 && k2 < n2 && word1[k1] > word2[k2]) || k2==n2)
ans.push_back(word1[i++]);
else //if((k1 < n1 && k2 < n2 && word2[k2] > word1[k1]) || k1==n1)
ans.push_back(word2[j++]);
}
else if(i < n1 && j == n2)
ans.push_back(word1[i++]);
else
ans.push_back(word2[j++]);
// cout << i << " " << j << endl;
}
return ans;
}
};
36 ms 8.8 MB C++
我的CSDN部落格地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!