leetcode算法题--最长快乐字符串★

原题链接:https://leetcode-cn.com/problems/longest-happy-string/

贪心算法

string longestDiverseString(int a, int b, int c) {
    vector<vector<char>> v;
    v.push_back({(char)a,'a'});
    v.push_back({(char)b,'b'});
    v.push_back({(char)c,'c'}); 

    string ans;
    while(ans.size()<a+b+c){
        sort(v.rbegin(),v.rend());//每次循环均排序,v[0]是剩余最多的,v[1]是次多的
        if(ans.size()>0&&ans.back()==v[0][1]){//如果剩余最多的,与上次选取的重复,则选取次多的。次多的一定不会与上次重复
            if(v[1][0]-- >0) ans+=v[1][1];
            else return ans;
        }else{//每次选取2个剩余最多的
            if(v[0][0]-- >0) ans+=v[0][1];
            if(v[0][0]-- >0) ans+=v[0][1];
        }
    }
    return ans;
}

你可能感兴趣的:(算法)