Longest Happy String
MediumStringGreedyHeap (Priority Queue)
Solution
export function longestDiverseString(a: number, b: number, c: number): string {
const n = a + b + c;
let answer = '';
let [curra, currb, currc] = [0, 0, 0];
for (let i = 0; i < n; i++) {
if ((a >= b && a >= c && curra != 2) || (a > 0 && (currb == 2 || currc == 2))) {
[curra, currb, currc] = [curra + 1, 0, 0];
answer += 'a';
a -= 1;
} else if ((b >= a && b >= c && currb != 2) || (b > 0 && (currc == 2 || curra == 2))) {
[curra, currb, currc] = [0, currb + 1, 0];
answer += 'b';
b -= 1;
} else if ((c >= a && c >= b && currc != 2) || (c > 0 && (curra == 2 || currb == 2))) {
[curra, currb, currc] = [0, 0, currc + 1];
answer += 'c';
c -= 1;
}
}
return answer;
}
Complexity
- Time:
O(N) = O(a + b + c)
- Space:
O(1)