#include <algorithm> #include <cstddef> #include <string> class Solution { public: static bool cmp(int a, int b) { string str1 = to_string(a); string str2 = to_string(b); cout<<str1 <<" " <<str2<<endl; int len1 = str1.size(); int len2 = str2.size(); if (len1 == len2) return str1 >str2;//这个的意思表示str1大就排在前面 else if (len1 > len2) { string temp = str1.substr(0, len2); string temp2 = str1.substr(len2, str1.size()); if (temp == str2&& temp2 < str2 ) { return false;//也就是让str2放在前面 } } else { string temp = str2.substr(0, len1); string temp2 = str2.substr(len1, str2.size()); if (temp == str1 && temp2 < str1) { return true;//也就是让str1在前面 } } return str1 > str2; } string solve(vector<int>& nums) { // write code here //得自定义排序方法,如果位数相同则字典序大的就大,当位数不同,则位数少的与位数大的前部分相同,则返回位数低的,若位数低的与位数高的前部分不相同就返回字典序(这里的字典序指的是左往右进行比较) int n = nums.size(); sort(nums.begin(), nums.end(), cmp); string ans; for (int i = 0; i < n; i++) ans += to_string(nums[i]); int i = 0; while(ans[i] == '0'&& i< n - 1)i++; ans = ans.substr(i , ans.size()); return ans; } };