https://leetcode.com/problems/largest-number/description/
几个写的时候出bug的地方
(1)自己写过itoa,然后v=0的情况
(2)string的cmp是有定义的,不需要自己实现。
其他都很直观了,排序函数就是a+b > b+ a
bool cmp(const string &a, const string &b) {
// string ta = a + b;
// string tb = b + a;
// for (int i = 0; i < ta.size(); i++) {
// if (ta[i] != tb[i]) {
// return ta[i] > tb[i];
// }
// }
// return true;
return a+b > b+a;
}
class Solution {
public:
string largestNumber(vector<int>& nums) {
int sum = 0;
for (int i = 0; i < nums.size(); i++) {
sum += nums[i];
}
if (sum == 0) return "0";
vector<string> ss;
for (int i = 0; i < nums.size(); i++) {
ss.push_back( to_string(nums[i]) );
}
sort(ss.begin(), ss.end(), cmp);
string ans = "";
for (int i = 0; i < ss.size(); i++) {
ans = ans + ss[i];
}
return ans;
}
};