解题思路:
这是一种贪心的思想,每次都把最多数量的字符放到字符串末尾,当然要保证不能超过两个连续字符,就能保证最长快乐字符串,代码如下:
bool cmp(const pair<int, char>& a, const pair<int, char>& b) {
return a.first > b.first;
}
class Solution {
public:
string longestDiverseString(int a, int b, int c) {
vector<pair<int, char>> count = {{a, 'a'}, {b, 'b'}, {c, 'c'}};
string s;
while(1) {
sort(count.begin(), count.end(), cmp);
int len = s.size();
for(auto& [x, y] : count) {
if(x == 0) continue;
if(len >= 2 && s[len - 1] == y && s[len - 2] == y) continue;
s += y;
x --;
break;
}
if(s.size() == len) break;
}
return s;
}
};