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

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

时间:2015-09-21 01:41:15      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:牛客网   剑指offer   把数组排成最小的数   

题目描述

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


将数字转化为字符串,然后对字符串进行快速排序

class Solution {
public:
    string PrintMinNumber(vector<int> numbers) {
     string r;
     vector<string> sr;
     for(int i=0;i<numbers.size();i++){
      sr.push_back(numberToString(numbers[i]));
     }
     sort(sr.begin(),sr.end(),compare);
     for(int i=0;i<sr.size();i++){
      r += sr[i];
     }
  return r;  
    }

    string numberToString(int n) {
     return (n>9?numberToString(n/10):"")+char(n%10+‘0‘);
    }

    static bool compare(const string& a, const string& b){
     return a+b<=b+a;
    } 
};

版权声明:本文为博主原创文章,未经博主允许不得转载。

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

标签:牛客网   剑指offer   把数组排成最小的数   

原文地址:http://blog.csdn.net/zgljl2012/article/details/48611261

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