关闭

剑指offer第三十二题【把数组排成最小的数】c++实现

标签: c语言剑指offer算法
136人阅读 评论(0) 收藏 举报
分类:
把数组排成最小的数

题目描述

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

这道题其实就是一道排序题,主要就是排序规则。

要的是连接后的字典序最小

那就是  s1+s2和s2+s1当做排序依据

string toString(int number){
    char s[15] ;
    sprintf(s,"%d",number);
    string res(s);
    return res;
}
bool cmp(int a,int b){
    string sa=toString(a)+toString(b);
    string sb=toString(b)+toString(a);
    return sa<sb;
}
string PrintMinNumber(vector<int> numbers) {
    sort(numbers.begin(),numbers.end(),cmp);
    string res="";
    for(int i=0;i<numbers.size();i++){
        res+=toString(numbers[i]);
    }
    return res;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7575次
    • 积分:437
    • 等级:
    • 排名:千里之外
    • 原创:37篇
    • 转载:3篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论