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下就好了