LeetCode 1405 最长快乐字符串[贪心] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 1405 最长快乐字符串[贪心] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。


解题思路:
这是一种贪心的思想,每次都把最多数量的字符放到字符串末尾,当然要保证不能超过两个连续字符,就能保证最长快乐字符串,代码如下:

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;
    
;

以上是关于LeetCode 1405 最长快乐字符串[贪心] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 1219. 黄金矿工 / 1748. 唯一元素的和 / 1405. 最长快乐字符串

Leetcode 5195. 最长快乐字符串(贪心)

leetcode-5195-最长快乐字符串

[1392].最长快乐前缀

[1392].最长快乐前缀

快乐字符串