题目描述:
JZ45 把数组排成最小的数
思路:
class Solution {
public:
static bool cmp(string& x, string& y) {
// 如果字符串a拼接b的得到的数字大于b拼接a
// 那么肯定b应该排在a的前面
// 我们要就按照这样的次序将排序的比较重载就可以了
return x + y < y + x;
}
string PrintMinNumber(vector<int> numbers) {
string res = "";
if (numbers.size() == 0) return res;
// 将数字转换成字符串
vector<string> nums;
for (int i = 0; i < numbers.size(); ++i) {
nums.push_back(to_string(numbers[i]));
}
// 排序
sort(nums.begin(), nums.end(), cmp);
// 叠加
for (int i = 0; i < nums.size(); ++i) {
cout << nums[i] << " ";
res += nums[i];
}
cout << endl;
return res;
}
};
😿😿😿
😿😿
😿