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

把数组排成最小的数
  • 参与人数:1233时间限制:1秒空间限制:32768K
  • 通过比例:20.53%
  • 最佳记录:0 ms|8552K(来自  啊哈哈)
  •  算法知识视频讲解

题目描述

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{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 numbers) {
    sort(numbers.begin(),numbers.end(),cmp);
    string res="";
    for(int i=0;i


你可能感兴趣的:(剑指offer,c语言,剑指offer,算法)