Longest Happy String LeetCode solution in C++

1
class Solution {
2
public:
3
string longestDiverseString(int a, int b, int c) {
4
// using max heap
5
priority_queue<pair<int, char>> pq;
6
if (a) pq.push({a, 'a'});
7
if (b) pq.push({b, 'b'});
8
if (c) pq.push({c, 'c'});
9
string ans = "";
10
while (pq.size() > 1) {
11
pair<int, char> one = pq.top();
12
pq.pop();
13
pair<int, char> two = pq.top();
14
pq.pop();
15
if (one.first >= 2) {
16
ans += one.second;
17
ans += one.second;
18
one.first -= 2;
19
} else {
20
ans += one.second;
21
one.first -= 1;
22
}
23
if (two.first >= 2 && two.first >= one.first) {
24
ans += two.second;
25
ans += two.second;
26
two.first -= 2;
27
} else {
28
ans += two.second;
29
two.first -= 1;
30
}
31
if (one.first > 0) pq.push(one);
32
if (two.first > 0) pq.push(two);
33
}
34
if (pq.empty()) return ans;
35
if (pq.top().first >= 2) {
36
ans += pq.top().second;
37
ans += pq.top().second;
38
} else {
39
ans += pq.top().second;
40
}
41
return ans;
42
}
43
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0