首页 > 编程语言 >每日算法之把数组排成最小的数

每日算法之把数组排成最小的数

时间:2022-12-12 14:47:41浏览次数:48  
标签:排成 String strArr step 算法 numbers 数组

JZ45 把数组排成最小的数

描述

输入一个非负整数数组numbers,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
例如输入数组[3,32,321],则打印出这三个数字能排成的最小数字为321323。
1.输出结果可能非常大,所以你需要返回一个字符串而不是整数
2.拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0

具体做法

step 1:优先判断空数组的特殊情况。
step 2:将数组中的数字元素转换成字符串类型。
step 3:重载排序比较为字符串类型的x + y < y + x,然后进行排序。
step 4:将排序结果再按照字符串拼接成一个整体。

代码

package mid.JZ45把数组排成最小的数;

import java.util.Arrays;
import java.util.Comparator;

public class Solution {
    public String PrintMinNumber(int [] numbers) {
        if(numbers == null || numbers.length == 0) {
            return "";
        }

        String[] strArr = new String[numbers.length];

        for (int i = 0; i < numbers.length; i++) {
            strArr[i] = numbers[i] + "";
        }

        Arrays.sort(strArr, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                String s1 = o1 + o2;
                String s2 = o2 + o1;
                return s1.compareTo(s2);
            }
        });

        StringBuilder res = new StringBuilder();
        for (String s : strArr) {
            res.append(s);
        }

        return res.toString();
    }
}

标签:排成,String,strArr,step,算法,numbers,数组
From: https://www.cnblogs.com/loongnuts/p/16975971.html

相关文章

  • 第一章算法概述总结
    代码规范类及其排版格式声明属性依次序是public:、protected:、private:。关键字public,protected,private不要缩进,声明的函数和变量缩进一个制表符。类声明前应加上注释,注......
  • 常见数据结构与算法的Python实现
    有人问我数据结构与算法怎么学?怎么用Python实现常见的数据结构算法?我找到一个github标星66.6k+的仓库,把各种常见算法用Python实现了,而且还有动图演示,非常值得推荐。(黄海广)仓......
  • 推荐:常见算法的python实现(github上25000多star)
    近日在github上发现一个25000多star的仓库,把各种常见算法用python实现了,而且还有动图演示,非常值得推荐。仓库说明这个仓库用python语言实现了绝大部分算法,主要是用于教学目......
  • 数组名的注意事项
    intmain(){ intarr[]={1,2,3,4,5,6,7,8,9,0}; printf("%p\n",arr);//数组名是数组首个元素的地址 printf("%p\n",&arr[0]);//数组名是数组首个元素的地址 printf("......
  • 《3D计算机视觉:原理、算法及应用》一本全搞定
       1966年,人工智能学家Minsky在给学生布置的作业中,要求学生通过编写一个程序让计算机告诉我们它通过摄像头看到了什么,这也被认为是计算机视觉(ComputerVision,CV)最早的......
  • 数据算法之数据结构
      packagecom.Lucky.DataStructure;/*数据结构:逻辑结构+储存结构+储存结构的运算逻辑结构分为:线性结构1:1树状结构......
  • 力扣852(java&python3)-山脉数组的峰顶索引(中等)
    题目:符合下列属性的数组arr称为山脉数组:arr.length>=3存在i(0<i <arr.length-1)使得:arr[0]<arr[1]<...arr[i-1]<arr[i]arr[i]>arr[i+1]>...>......
  • 笔记(数组)
    冒泡排序voidbubble_sort(intarr[],intsz){inti=0;for(i=0;i<sz-1;i++){intj=0;for(j=0;j<sz-1-i;j++){if(arr[j......
  • 他奠定了当今计算机算法的规范化和量化度量
    如今的我们对算法可谓并不陌生,由于互联网发展迅猛,哪怕没有系统学习过计算机底层理论的程序员,也接触过无数的算法。昨天笔者看到一个开放性思考题,内容是这样的:如果一个程序只......
  • vue源码分析-diff算法核心原理
    这一节,依然是深入剖析Vue源码系列,上几节内容介绍了VirtualDOM是Vue在渲染机制上做的优化,而渲染的核心在于数据变化时,如何高效的更新节点,这就是diff算法。由于源码中关于d......