题目描述:

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;
    }
};

😿😿😿

😿😿

😿