https://leetcode.com/problems/largest-number/
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.
其实是数字比较大小的排序问题
对于数字a,b,如果"ab">"ba",那么a就应该在b的前面
因此
string largestNumber(vector<int>& nums)
{
if (nums.empty())
return "";
vector<string> arr;
for (int i : nums)
arr.push_back(to_string(i));
sort(begin(arr), end(arr), [](string &s1, string &s2) { return s1 + s2>s2 + s1; });
string res;
for (auto s : arr)
res += s;
while (res[0] == '0' && res.length()>1)
res.erase(0, 1);
return res;
}
参考 《剑指Offer》P177