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 };
  • 相关阅读:
    Note_Master-Detail Application(iOS template)_01_YJYAppDelegate.h
    iOS 字号转换问题
    iOS--判断App是否第一次安装启动
    iOS--正则表达式
    iOS--APP之间的跳转
    iOS--FMDB的增删改查
    iOS--AFNetworking3.0的使用
    开发一个微笑小程序示例
    HTTP协议整理
    秒杀/抢购系统设计优化
  • 原文地址:https://www.cnblogs.com/qqky/p/6958780.html
Copyright © 2011-2022 走看看