原题:
Given a list of non negative integers, arrange them such that they form the largest number.
For example, given [3, 30, 34, 5, 9]
, the largest formed number is 9534330
.
Note: The result may be very large, so you need to return a string instead of an integer.
class Solution {
public:
static bool cmp(string a, string b)
{
return a+b > b+a;
}
string largestNumber(vector<int>& nums) {
string ans;
int n = nums.size();
vector<string> str(n);
for(int i=0; i<n; i++)
str[i] = ItoS(nums[i]);
sort(str.begin(), str.end(), cmp);
for(int i=0; i<n; i++)
ans += str[i];
while(ans[0]=='0' && ans.length()>1)
ans.erase(0, 1);
return ans;
}
string ItoS(int n)
{
char s[10];
sprintf(s, "%d", n);
string str = s;
return str;
}
};