0%

把数组排成最小的数

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

1
struct::bool operator()(const string a, const string b) const
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public:
struct {
bool operator()(const string a, const string b) const
{
return a + b < b + a;
}
} compare;
string PrintMinNumber(vector<int> numbers) {
vector<string> strings;
ostringstream oss;
for (const int number: numbers)
{
strings.push_back(to_string(number));
}
sort(strings.begin(), strings.end(), compare);
for (const string number: strings)
{
oss << number;
}
return oss.str();
}
};