例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
实际上数组中的数存在全序关系,即如果 a > bb > c,则 a > c.
如,3和32放在一起,要么是332要么是323,可得 3 > 32. 同样可得 32 > 321.
所以只要重新定义好 sort 的比较函数即可;

class Solution {
public:
    string PrintMinNumber(vector<int> numbers) {
        int len = numbers.size();
        vector<int> index(len);
        for (int i = 0; i < len; i++) index[i] = i;
        vector<string> str;
        for (auto num: numbers) str.push_back(to_string(num));
        sort(index.begin(), index.end(), [&](int a, int b) {
            return str[a] + str[b] < str[b] + str[a];
        });
        string res;
        for (auto idx: index) {
            res += str[idx];
        }
        return res;
    }
};