题目
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
思路
将数字放入数组,利用数组的排序函数sort(可以根据自定义的规则来排序),排序后越小的数放在越高的次位,这样到最后的排成数字才能最小
代码实现
class Solution {
public:
string PrintMinNumber(vector<int> numbers) {
vector<string> sort_nums;
for(auto &i : numbers) // 循环取出numbers中的元素放入i、
sort_nums.push_back(to_string(i)); // 将数组放入到string中
sort(sort_nums.begin(), sort_nums.end(),
[](string &s1, string &s2){return s1+s2 <s2+s1;}); // 根据第三个参数定义的比较规则将string中的元素排序
string result = "";
for(auto &s : sort_nums) // 循环取出sortedNums中的元素放入s中
result += s;
return result;
}
};