把数组排成最小的数

来源:互联网 发布:18*进入编程 编辑:程序博客网 时间:2024/06/07 19:40

题目

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

思路

把整数转换成字符串,然后对字符串数组进行排序,排序比较的规则是比较两个字符串不同叠加方式下的字典序,最后再合并起来

参考代码

class Solution{public:    static bool cmp(const string& s1, const string& s2)    {        return s1 + s2 < s2 + s1;    }    string PrintMinNumber(vector<int> numbers)    {        vector<string> vec(numbers.size());        for (int i = 0; i < numbers.size(); ++i)        {            vec.push_back(to_string(numbers[i]));        }        sort(vec.begin(), vec.end(), cmp);        string ans;        for (auto s : vec)        {            ans += s;        }        return ans;    }};
原创粉丝点击