1.解析
我们一般使用的排序比较大小都是
a>b 那么a在b的前面
a=b 无所谓
a<b a在b的后面
本题的排序则是
ab>ba 那么a在b的前面
ab=ba 无所谓
ab<ba a在b的后面
2.代码
class Solution {
public:string largestNumber(vector<int>& nums) {//1.先把所有的数字转成string//2.对sort这个排序进行转化//3.提取结果//特殊处理:如果第一个位置为0,那这个字符串就是全0vector<string> strs;for(int num:nums){strs.push_back(to_string(num));}sort(strs.begin(),strs.end(),[](const string &s1,const string &s2){return s1+s2>s2+s1;});string ret;for(auto& s:strs){ret+=s;}if(ret[0]=='0') return "0";return ret;}
};
补充语法:lambda 表达式
[capture_list] (parameters) -> return_type { function_body }
-
capture_list:捕获列表,捕获外部作用域的变量,可以为空
-
-
parameters:参数列表,和正常的函数一样
剩下的就是返回值类型(C++14之后可以省略,会自动推导),和函数主体,第一次看感觉这个东西的写法有点奇怪,在上面的代码中就是sort的一个参数。