zoukankan      html  css  js  c++  java
  • 32、剑指offer--把数组排成最小的数

    题目描述
    输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
     
    解题思路:本题比较mn 和 nm,哪个小就怎么排
    1)首先将每一个数字以字符串的形式拷入strName中
    2)对其调用排序。排序按我们设计的compare规则比较
    3)将排好序的数组存入结果中,返回结果
     1 bool compare(const string &st1,const string &st2)
     2 {
     3     string s1 = st1 + st2;
     4     string s2 = st2 + st1;
     5     return s1 < s2;
     6 }
     7 class Solution {
     8 public:
     9     const int g_MaxNumberLength=10;
    10     string PrintMinNumber(vector<int> numbers) {
    11         string result;
    12         int length = numbers.size();
    13         if(length <= 0)
    14             return result;
    15         char** strNumbers=new char*[length];
    16         for(int i=0;i<length;i++)
    17         {
    18             strNumbers[i]=new char[g_MaxNumberLength+1];
    19             sprintf(strNumbers[i],"%d",numbers[i]);
    20         }
    21         sort(strNumbers,strNumbers+length,compare);
    22         for(int i=0;i<length;i++)
    23             result.append(strNumbers[i]);
    24  
    25         for(int i=0;i<length;i++)
    26             delete[] strNumbers[i];
    27         delete[] strNumbers;
    28         return result;
    29     }
    30 };
  • 相关阅读:
    Mysql 从入门到遗忘
    Centos7开放及查看端口
    创建及修改数据库
    02_python是一种什么语言?
    03_SQL server数据类型
    02_关系数据库
    01_初识数据库
    kali 更新源
    01_Python简介
    Alertmanager高可用
  • 原文地址:https://www.cnblogs.com/qqky/p/6958780.html
Copyright © 2011-2022 走看看