描述
输入一个非负整数数组numbers,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
例如输入数组[3,32,321],则打印出这三个数字能排成的最小数字为321323。
1.输出结果可能非常大,所以你需要返回一个字符串而不是整数
2.拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0
输入:
[11,3]
返回值:
"113"
思路:可以对数组进行排序,什么样的排序呢?两个字符串拼接达到最小,那么两个字符串哪个在前,哪个在后?需要仿函数。
class Solution {
public:
static bool cmp(string& x, string& y) {
//仿函数比较
return x + y < y + x;
}
string PrintMinNumber(vector<int> numbers) {
vector<string> vec;
string sub="";
for (auto s : numbers)
vec.push_back(to_string(s));
//自定义仿函数
sort(vec.begin(), vec.end(), cmp);
for (auto s : vec)
sub += s;
return sub;
}
};

911

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



