1. 程式人生 > >[lintcode]184. 最大數

[lintcode]184. 最大數

給出一組非負整數,重新排列他們的順序把他們組成一個最大的整數。

這裡用到了貪心演算法的思想,保證每次組成的數都是最大的,那麼最後的數一定是最大的。具體實現時首先將陣列轉為字串,使用sort()函式自定義比較規則即可。利用string的特性可以很方便的實現。

class Solution {
public:
    /*
     * @param nums: A list of non negative integers
     * @return: A string
     */
    string largestNumber(vector<int> &nums) {
        // write your code here
        vector<string> strnums(nums.size());
        for(int i=0;i<nums.size();i++){
            strnums[i]=to_string(nums[i]);
        }
        sort(strnums.begin(),strnums.end(),cmp);
        string res="";
        for(int i=0;i<nums.size();i++){
            res = res + strnums[i];
        }
        if(res[0]=='0') return "0";
        return res;
    }
    static bool cmp(string strnum1,string strnum2){
        string str1 = strnum1 + strnum2;
        string str2 = strnum2 + strnum1;
        return str1 > str2;
    }
};