题解:如果只是从大到小排序,那么必然是错误的,例如 32 321 ,排序得到的结果是32132,但实际应该是32321,利用题目中给的string的特性,可以根据cmp自定义排序来构造返回return a + b > b + a,即可比较完美的解决此问题。

时间复杂度 O(nlogn)
空间复杂度 O(1)

class Solution {
public:
    static bool cmp(string a, string b)
    {
        return a + b > b + a;
    }
    /**
         * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
         * 返回这n个数能够组成的最大的数字是多少
         * @param s string字符串vector 
         * @return string字符串
         */
    string solve(vector<string> &s)
    {
        string res = "";
        // write code here
        sort(s.begin(), s.end(), cmp);
        for (int i = 0; i < s.size(); i++)
            res += s[i];
        return res;
    }
};