string largestNumber(vector<int> &num) {
string result;
if (num.size()==0){
return result;
}
bool allZero = true;
vector<string> strNum;
for (auto& i:num){
strNum.push_back(to_string(i));
if (i != 0){
allZero = false;
}
}
if (allZero){
return string("0");
}
sort(strNum.begin(), strNum.end(), [](const string& a, const string& b){
if ((a+b)>(b+a)){
return true;
}
else{
return false;
}
});
for (auto& i:strNum){
result += i;
}
return result;
}
提交之前,真不确定能过test case。accept之后想了一下,比较的基本意义在于建立一个偏序规则,而这道题的偏序规则就是前后排列谁构成的数字更大。通过这个偏序规则对ector进行排序之后在join下就好了
字符串排序算法

本文介绍了一种用于将整数数组转换为最大可能数值的算法。该算法首先将整数转换为字符串,然后根据自定义排序规则对字符串进行排序,最终拼接成最大数值。自定义排序规则确保了任意两个字符串拼接时,前缀构成的数字总是大于后缀构成的数字。
438

被折叠的 条评论
为什么被折叠?



