32.Permute_an_Array_into_the_Smallest_Number
2024年2月2日小于 1 分钟约 155 字
// 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,
// 打印能拼接出的所有数字中最小的一个。
// 例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
class Solution {
public:
string PrintMinNumber(vector<int> numbers) {
// 意识到这是一个排序问题很关键!
string res;
int nums = numbers.size();
vector<string> buffer(nums);
for (int i = 0; i < nums; ++i) buffer[i] = to_string(numbers[i]);
sort(buffer.begin(), buffer.end(), [](string& s1, string& s2) -> bool {
return (s1 + s2) < (s2 + s1);
});
for (int i = 0; i < nums; ++i) res.append(buffer[i]);
return res;
}
};