2024-10-16 Daily Challenge
Today I have done leetcode's October LeetCoding Challenge with cpp
.
October LeetCoding Challenge 16
Description
Longest Happy String
A string s
is called happy if it satisfies the following conditions:
s
only contains the letters'a'
,'b'
, and'c'
.s
does not contain any of"aaa"
,"bbb"
, or"ccc"
as a substring.s
contains at mosta
occurrences of the letter'a'
.s
contains at mostb
occurrences of the letter'b'
.s
contains at mostc
occurrences of the letter'c'
.
Given three integers a
, b
, and c
, return the longest possible happy string. If there are multiple longest happy strings, return any of them. If there is no such string, return the empty string ""
.
A substring is a contiguous sequence of characters within a string.
Example 1:
Input: a = 1, b = 1, c = 7 Output: "ccaccbcc" Explanation: "ccbccacc" would also be a correct answer.
Example 2:
Input: a = 7, b = 1, c = 0 Output: "aabaa" Explanation: It is the only correct answer in this case.
Constraints:
0 <= a, b, c <= 100
a + b + c > 0
Solution
class Solution {
public:
string longestDiverseString(int a, int b, int c, char charA = 'a', char charB = 'b', char charC = 'c') {
if(a < b) return longestDiverseString(b, a, c, charB, charA, charC);
if(b < c) return longestDiverseString(a, c, b, charA, charC, charB);
if(!b) return string(min(2, a), charA);
int countA = min(2, a);
int countB = a - countA >= b ? 1 : 0;
return string(countA, charA) + string(countB, charB) + longestDiverseString(a - countA, b - countB, c, charA, charB, charC);
}
};