Largest Number

 

class Solution {
public:
    string largestNumber(vector<int>& nums) {
        string res;
        if(!nums.size())
            return res;
        vector<string> s;
        for(int i=0;i<nums.size();i++)
            s.push_back(to_string(nums[i]));
        sort(s.begin(),s.end(),[](string& a,string& b){return (a+b)>(b+a);});
        for(int i=0;i<s.size();i++)
            res+=s[i];
        int i=0;
        while(res[i]=='0'&&res.size()>1)
            res.erase(0,1);
        return res;
    }
};

代码中使用到了C++ 11的新特性 lambda函数,可见:http://www.cnblogs.com/slysky/p/3945126.html 

string类型特有的对象方法:s.erase(pos,len) 删除从下标pos开始的len个字符

string to_string(int val); // 将一个数值转换为string字符串,属于string类库函数 (#include <string>)

把[first,last)中的元素按照升序排列,排序是不稳定的,可以使用默认的操作符'<'进行比较,也可以自定义比较规则。

comp比较两个元素,并返回比较结果的bool值。

使用sort函数应当声明 #include <algorithm>

 

posted on 2016-06-01 11:16  summerkiki  阅读(113)  评论(0编辑  收藏  举报