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

    题目描述

    输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
     
    解题思路:
    开始自己在想的时候,也试着将两个字符串比如321和32进行比较,发现32132比32321小,还在思考321放在前面和32放在前面怎么判断大小~~~ o(╯□╰)o  这脑子~~~~
    只需要自定义排序规则即可,将所有的数字按照A+B < B+A的排序规则排序,那么最前面的就是跟其他字符串拼起来最小的。整个自定义有序的拼起来就是最后的结果。
    class Solution {
    public:
      //自定义排序规则 static bool cmp(string str1, string str2){ string str12 = str1 + str2; string str21 = str2 + str1; return str12 < str21; } string PrintMinNumber(vector<int> numbers) { vector<string>str; for(int i = 0; i < numbers.size(); i++){ strstream ss; string tmpstr; ss << numbers[i]; ss>>tmpstr; str.push_back(tmpstr); } sort(str.begin(), str.end(), cmp); string resstr; for(int i = 0; i < str.size(); i++){ resstr.append(str[i]); } return resstr; } };

      

  • 相关阅读:
    开发中遇到的问题点
    ThreadLocal
    Java多线程10:join()方法
    Java多线程9:中断机制
    Java多线程8:wait()和notify()/notifyAll()
    Java多线程7:死锁
    Java多线程0:核心理论
    MySQL中and和or的优先级的问题
    Java多线程6:Synchronized锁代码块(this和任意对象)
    shiro英语
  • 原文地址:https://www.cnblogs.com/chengsheng/p/10677262.html
Copyright © 2011-2022 走看看