题目
解法:自定义排序
排序的时候比较两个数字形成的字符串,将两个字符串前后放置形成不同的串之间比较大小,可以直接得出这两个串在最后形成的字符串的相对位置
python版本
class LargerNumKey(str):def __lt__(x, y):return x+y > y+xclass Solution:def largestNumber(self, nums):largest_num = ''.join(sorted(map(str,num), key=LargerNumKey))return '0' if largest_num[0] == '0' else largest_num
C++版本
class Solution {
static bool cmp(const int &left, const int &right){
string s1 = to_string(left);string s2 = to_string(right);return s1 + s2 > s2 + s1;}
public:string largestNumber(vector<int>& nums) {
sort(nums.begin(),nums.end(),cmp);string ans = "";for(auto num : nums){
ans += to_string(num);}return ans[0] == '0' ? "0" : ans;}
};