leetcode 1405

简介

贪心算法

思路

填2个数量最多的字母,如果下一次该字母数量还是最多的,填1个数量次多的字母

code

class Solution1405 {
public:
    string longestDiverseString(int a, int b, int c) {
        vector<pair<int, char>> v;
        v.push_back(make_pair(a, 'a'));
        v.push_back(make_pair(b, 'b'));
        v.push_back(make_pair(c, 'c'));
        string ans;
        while(v[0].first || v[1].first || v[2].first) {
            sort(v.rbegin(), v.rend());
            if(ans.empty() || ans.back()!=v[0].second) {
                if(v[0].first-- > 0) ans = ans + v[0].second;
                if(v[0].first-- > 0) ans = ans + v[0].second;
            }
            else{
                if(v[1].first-- > 0) ans = ans + v[1].second;
                else break;
            }
        }
        return ans;
    }
};
原文地址:https://www.cnblogs.com/eat-too-much/p/14262300.html