题意:给一组数,求他们连起来能连出来的最大的数。
解法:一开始想就排一下序连在一起就好啦……结果样例就跪了……然后研究了各种排序规则……最后……我是傻蛋【手动挥手
注意前导零什么的……真坑
代码:
class Solution { public: static bool cmp(string& a, string& b) { string ta, tb; ta = a + b; tb = b + a; return ta > tb; } string largestNumber(vector<int>& nums) { vector<string> snums; for(int i = 0; i < nums.size(); i++) { string nts; if(nums[i] == 0) nts += '0'; while(nums[i]) { nts += (nums[i] % 10) + '0'; nums[i] /= 10; } reverse(nts.begin(), nts.end()); snums.push_back(nts); } sort(snums.begin(), snums.end(), cmp); string ans; int flag = 0; for(int i = 0; i < snums.size(); i++) { if(snums[i][0] != '0') flag = 1; if(snums[i][0] == '0' && !flag) continue; ans += snums[i]; } if(ans.size() < 1) ans = "0"; return ans; } };