给出一组非负整数,重新排列他们的顺序把他们组成一个最大的整数。
这里用到了贪心算法的思想,保证每次组成的数都是最大的,那么最后的数一定是最大的。具体实现时首先将数组转为字符串,使用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;
}
};