題目:
輸入一個非負整數(shù)數(shù)組,把數(shù)組里所有數(shù)字拼接起來排成一個數(shù),打印能拼接出的所有數(shù)字中最小的一個。
示例:
輸入: [3,30,34,5,9]
輸出: "3033459"
思路:
將原始int數(shù)組處理成字符串數(shù)組,對字符串數(shù)組排序,排序條件:
a+b < b+a
最后把字符串數(shù)組合并成一個字符串返回。
代碼:
class Solution {
public:
string minNumber(vector<int>& nums) {
vector<string> v;
for(auto& val: nums)
{
v.push_back(to_string(val));
}
sort(v.begin(), v.end(), [](string& a, string& b)->bool{
return a+b < b+a;
});
ostringstream oss;
for(auto& s: v)
{
oss<<s;
}
return oss.str();
}
};