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

    题目描述

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

    题目解析

    先设置一种比较优先级排序,优先级为:将比较的两个元素拼接的两种结果去比较大小,然后由他们的大小关系去比较所拼接元素的优先级。
    eg:输入数组{12,321},首先比较12321和32112的大小,然后根据这个大小去拼接字符串

    题目解答

    import java.util.*;
    
    public class Solution {
        public String PrintMinNumber(int [] numbers) {
            ArrayList<String> list = new ArrayList<>();
            for(int x:numbers){
                list.add(x+"");
            }
            list.sort((o1,o2)->{
                String a1 = o1+o2;
                String a2 = o2+o1;
                return a1.compareTo(a2);
            });
            StringBuilder result = new StringBuilder();
            for(String x:list){
                result.append(x);
            }
            return result.toString();
        }
    }
    
  • 相关阅读:
    学习网站
    支付宝调用错误:Call to undefined function openssl_sign()
    打包APP
    PHP 转义
    tp5学习
    js函数
    php学习随笔--定时触发
    day07
    60.函数应用:学生管理系统
    59.列表推导式
  • 原文地址:https://www.cnblogs.com/yzhengy/p/13263534.html
Copyright © 2011-2022 走看看