题解:如果只是从大到小排序,那么必然是错误的,例如 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; } };