主要是注意cmp 需要定义在class外面,否则会出现非静态函数的问题。
bool cmp(const string& a, string& b){
int min_length= min(a.length(), b.length());
for(int i = 0; i < min_length; i++)
if(a[i] != b[i]) return a[i] > b[i];
for(int i = min_length; i < a.length(); i++)
if(a[i] != b[0]) return a[i] > b[0];
for(int i = min_length; i < b.length(); i++)
if(b[i] != a[0]) return a[0] > b[i];
return a + b > b + a ? true:false;
}
class Solution {
public:
string largestNumber(vector<int>& nums) {
vector<string> nums_string;
string all;
for(auto n : nums){
nums_string.push_back(std::to_string(n));
}
sort(nums_string.begin(), nums_string.end(), cmp);
for(auto s : nums_string)
all += s;
return all[0] == '0' ? "0":all ;
}
};