剑指 Offer 45. 把数组排成最小的数(内置排序算法)

力扣

重构‘<’运算符 

class Solution {
public:
    string minNumber(vector<int>& nums) {
        vector<string> ans;
        string res;
        for(auto i:nums)
        ans.push_back(to_string(i));
        //若拼接字符串 x + y > y + x,则 x “大于” y ;
        // 反之,若 x + y < y + x,则 x “小于” y ;
        // x “小于” y 代表:排序完成后,数组中 x 应在 y 左边;“大于” 则反之。
        //例如x:30,y:3  303(x+y)<330(y+x)

        sort(ans.begin(),ans.end(),
        [&](string &s1,string &s2){return s1+s2<s2+s1;});
        for(auto i=ans.begin();i!=ans.end();++i){
            res.append(*i);
            //res+=(*i)
        }
        return res;
    }
};

 

Guess you like

Origin blog.csdn.net/intmain_S/article/details/121773705