zoukankan      html  css  js  c++  java
  • 【剑指offer】把数组排成最小的数

    题目描述

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

    分析:排成最小的数,那么这些数组元素肯定有个最佳的排序,所以我们需要对数组元素进行排序,排序之后数组元素顺序连接即可组成最小的数

    所以这些数排序的规则是什么?字典序!

    假如x1x2x3和y1y2y3两个数,组成的数x1x2x3y1y2y3或y1y2y3x1x2x3字典序小的放前面!

    关键排序规则函数:

    static bool cmp(string a,string b)
    {
        string str1=a+b;
        string str2=b+a;
        return str1.compare(str2)<0;
    }
    //排序规则函数
    static bool cmp(string a,string b)
    {
        string str1=a+b;
        string str2=b+a;
        return str1.compare(str2)<0;
    }
    //int 转 string
    string intTostring(int x)
    {
        stringstream ss;
        ss<<x;
        string str=ss.str();
        return str;
    }
    string PrintMinNumber(vector<int> numbers)
    {
        vector<string> v;
        int n=numbers.size();
        if(n==0)
            return "";
        for(int i=0;i<n;i++)
        {
            v.push_back(intTostring(numbers[i]));
        }
        //按照规则排序
        sort(v.begin(),v.end(),cmp);
    
        //按照排序后直接顺序连接即可
        string ans="";
        for(int i=0;i<n;i++)
        {
            ans+=v[i];
        }
        return ans;
    }
  • 相关阅读:
    重定向丶管道丶参数传递
    zabbix监控redis
    zabbix监控mysql
    playbook
    zabbix通过jvm监控tomcat
    zabbix监控tcp状态
    部署centos6
    自动选择profile
    java jvm学习笔记十二(访问控制器的栈校验机制)
    java jvm学习笔记十一(访问控制器)
  • 原文地址:https://www.cnblogs.com/yinbiao/p/11577468.html
Copyright © 2011-2022 走看看