zoukankan      html  css  js  c++  java
  • 把数组排成最小的数

    题目描述

    输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
     
     
     
    提交链接:点击
     
     
     
    思路:
      定义一个排序规则,比如32    321,那么32321>32132,于是应该将321排在32的前面。
            一般的,字符串s1 s2,比较s1+s2和s2+s1的大小,如果s1+s2>s2+s1 说明s2应该在s1的前面,于是调用sort,自定义一个cmp函数即可。最后的结果就是将vector容器里面的数字用string拼接起来。
      tips:字符串转int    to_string(int)
     
     
     
    代码:
     
    class Solution {
    public:
        static int cmp(int a,int b){
            string s1=to_string(a);
            string s2=to_string(b);
            if(s1+s2 > s2+s1){
                return 0;
            }else return 1;
        }
        string PrintMinNumber(vector<int> numbers) {
            //定义一个排序规则
            /*
                字符串s1 s2,比较s1+s2和s2+s1的大小,如果s1+s2>s2+s1 说明s2应该在s1的前面
            */
            sort(numbers.begin(),numbers.end(),cmp);
            string result="";
            int len=numbers.size();
            for(int i=0;i<len;i++){
                result+=to_string(numbers[i]);
            }
            return result;
        }
    };
     
  • 相关阅读:
    工坊第五天
    工坊第四天
    工坊第三天
    工坊第二天
    工坊第一天
    莫队 优雅暴力出奇迹
    状压 DP 总结
    关于MatlabGUI清除WorkSpace的用法
    ArduinoNano卡在上传,无法烧录
    两轮差速驱动机器人的坐标轨迹计算
  • 原文地址:https://www.cnblogs.com/logo-88/p/9823093.html
Copyright © 2011-2022 走看看