美文网首页
把数组排成最小的数

把数组排成最小的数

作者: su945 | 来源:发表于2020-05-13 23:00 被阅读0次

    题目描述

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

    问题分析

    • 若ab > ba 则 a 大于 b,
    • 若ab < ba 则 a 小于 b,
    • 若ab = ba 则 a 等于 b;

    根据上述规则,我们需要先将数字转换成字符串再进行比较,因为需要串起来进行比较。比较完之后,按顺序输出即可。

    解题思路1

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

    相关文章

      网友评论

          本文标题:把数组排成最小的数

          本文链接:https://www.haomeiwen.com/subject/aqdanhtx.html