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