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.
bool cmp(const string a, const string b){
return (a+b) > (b+a);
}
class Solution {
public:
string tostring(int x){
if(x == 0) return "0";
string tmp = "";
while(x){
tmp = (char)(x%10+'0') + tmp;
x /= 10;
}
return tmp;
}
vector<string>s;
string largestNumber(vector<int> &num) {
for(int i = 0; i < num.size(); i++)
s.push_back(tostring(num[i]));
sort(s.begin(),s.end(),cmp);
string ans = "";
for(int i = 0; i < s.size(); i++)
if(ans != "" || s[i] != "0")
ans += s[i];
return ans == "" ? "0" : ans;
}
};