问题描述:
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(int a, int b)
{
string sa = to_string(a) + to_string(b);
string sb = to_string(b) + to_string(a);
if (sa.compare(sb) > 0) return true;
else return false;
}
class Solution {
public:
string largestNumber(vector<int>& nums) {
string res = "";
sort(nums.begin(),nums.end(),cmp);
if (nums[0] == 0) return "0";
for (int i = 0; i < nums.size(); i++)
{
res += to_string(nums[i]);
}
return res;
}
};