码迷,mamicode.com
首页 > 编程语言 > 详细

把数组排成最小的数

时间:2019-08-11 10:35:05      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:最小数   字符串   把数组排成最小的数   ring   color   个数   打印   a+b   溢出   

问题:

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

 

思路:

这是个大数问题,因为最后的数字可能会溢出,所以可以用字符串来排列结果。

对于任意两个数字a,b,可对其进行排列,比较规则是 a+b 和 b+a 哪个大。由此可对输入数组进行排序,排序后的结果即最小数字。

class Solution {
public:
    static bool cmp(int a,int b){
        string A = "",B = "";
        A += to_string(a);
        A += to_string(b);
        B += to_string(b);
        B += to_string(a);
        return A<B; 
    }
    string PrintMinNumber(vector<int> numbers) {
        string res = "";
        if(numbers.empty()) return res;
        sort(numbers.begin(),numbers.end(),cmp);
        for(auto i:numbers){
            res += to_string(i);
        }
        return res;
    }
};

 

把数组排成最小的数

标签:最小数   字符串   把数组排成最小的数   ring   color   个数   打印   a+b   溢出   

原文地址:https://www.cnblogs.com/fanmu/p/11334013.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!