给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。
参考:https://leetcode-cn.com/problems/largest-number/
证明过程很精彩:
class Solution {
public:
string largestNumber(vector<int>& nums) {
int n=nums.size();
string s[110];
for(int i=0;i<n;i++)s[i]="";
for(int i=0;i<n;i++){
if(nums[i]==0){
s[i]='0';
continue;
}
while(nums[i]){
s[i]=(char)('0'+nums[i]%10)+s[i];
nums[i]/=10;
}
}
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(s[i]+s[j]<s[j]+s[i])swap(s[i],s[j]);
}
}
string ans="";
for(int i=0;i<n;i++)ans=ans+s[i];
int wz=0;
while(ans[wz]=='0'&&ans.length()-1>wz)wz++;
string res="";
for(int i=wz;i<ans.length();i++)res=res+ans[i];
return res;
}
};