【剑指offer】把数组排成最小的数

来源:互联网 发布:淘宝上的杂牌手机 编辑:程序博客网 时间:2024/06/01 07:36

时间限制:1秒 空间限制:32768K 热度指数:51983
本题知识点: 数组

题目描述

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

思路:先把数组中的数字排序,排序的规则是关键。把比较的两个整数转换为字符串,比较合并后的大小。然后把排序后的数组元素合并到一个字符串中即可。
class Solution {public:            string PrintMinNumber(vector<int> numbers)    {        string result;          sort(numbers.begin(),numbers.end(),compare);                for(auto val:numbers)            result += to_string(val);                return result;           }   static bool compare(int a, int b)   {       string s1 = to_string(a)+to_string(b);       string s2 = to_string(b)+to_string(a);              return s1<s2;                }           };




0 0