Java——把数组排成最小的数

news2025/1/22 9:12:51

题目链接

牛客网在线oj题——把数组排成最小的数

题目描述

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

数据范围:
0<=len(numbers)<=100

题目示例

示例1

输入:
[11,3]

返回值:
“113”

示例2

输入:
[]

返回值:
“”

示例3

输入:
[3,32,321]

返回值:
“321323”

解题思路

这道题实际的意思是:将所有数组中的元素拼接成一个字符串,当这个字符串对应的数字比其他情况都小时,对应的拼接顺序是什么

首先数组中所有的元素都添加到整形类型的顺序表中,这样可以用Collections中的sort方法进行排序

Collections.sort需要传入顺序表list和比较方法,创建一个Comparator比较器,重写其中的compare方法
在这里插入图片描述

其中o1元素为第一个元素,o2元素为第二个元素,分别将o1o2排序形成的数字和o2o1排序形成的数字进行比较,返回其中较小值

最后再创建一个stringBuffer对象,将排序好的顺序表一一添加进stringBuffer对象中即可得到最终的字符串

完整代码

import java.util.*;

public class Solution {
    public String PrintMinNumber(int [] numbers) {
        if(numbers == null || numbers.length == 0){
            return "";
        }
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < numbers.length; i++){
            list.add(numbers[i]);
        }
        Collections.sort(list, new Comparator<Integer>() {
            @Override
            public int compare(Integer x, Integer y) {
                String xs = x + "" + y;
                String ys = y + "" + x;
                return xs.compareTo(ys);
            }
        });
        StringBuffer stringBuffer = new StringBuffer();
        for (int i = 0; i < numbers.length; i++){
            stringBuffer.append(list.get(i));
        }
        return stringBuffer.toString();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/468831.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

汇编语言(第3版)- 学习笔记 - 第1章-基础知识

汇编语言&#xff08;第3版&#xff09;- 学习笔记 - 第1章-基础知识 1.1 机器语言1.2 汇编语言的产生1.3 汇编语言的组成1.4 存储器1.5 指令和数据1.6 存储单元1.7 CPU对存储器的读写1.8 地址总线1.9 数据总线1.10 控制总线1.11 内存地址空间(概述)1.12 主板1.13 接口卡1.14 各…

NSSCTF-[NSSRound#X Basic]ez_z3 [MoeCTF 2022]Art [HDCTF2023]basketball

目录 NSSCTF-[NSSRound#X Basic]ez_z3 [MoeCTF 2022]Art [HDCTF2023]basketball NSSCTF-[NSSRound#X Basic]ez_z3 题目下载&#xff1a;下载 查壳&#xff1a; 发现有upx壳&#xff0c;但是使用upx -d命令不能脱壳&#xff0c;载入十六进制编辑器查看 把XYU改为UPX&#x…

netty/websocket服务器配置阿里云SSL证书安全访问配置,亲测有效

背景&#xff1a;java 微服务包括https访问和websocket访问&#xff0c;当https接口访问ws请求时报错,因为https能访问wss。 申请阿里云免费证书后&#xff0c;搜索各种教程比如nginx配置方式、netty访问证书等。走了不少弯路&#xff0c;终于走通一种。 关键点&#xff1a;1…

龙蜥开发者说:亲历从基础设施构建到系统质量保障,龙蜥未来可期 | 第 19 期

「龙蜥开发者说」第 19 期来了&#xff01;开发者与开源社区相辅相成&#xff0c;相互成就&#xff0c;这些个人在龙蜥社区的使用心得、实践总结和技术成长经历都是宝贵的&#xff0c;我们希望在这里让更多人看见技术的力量。本期故事&#xff0c;我们邀请了龙蜥社区开发者宋彦…

【Python】值得收藏,三元一次方程组的计算,快来看看有什么新奇的~~~

三元一次方程组的计算对于大家来说都不陌生了&#xff0c;但是用编程语言来解决方程组问题想必还是会有些大聪明们有点迷糊的&#xff0c;今天就带大家来看看是怎么利用python实现方程组的解集的&#xff1b; 本文主要分成两部分&#xff1a; 解题验算综述 解题 题目1 代码 …

Security中使用Redis管理会话(模拟cookie实现)

配置redis相关 1. 配置Redis package com.zzhua.blog.config.redis;import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.cor…

【HCIP】IPV6综合实验(ripng,ospfv3,bgp,6to4)

目录 一、IP规划 二、 连通公网部分(IPv4) 三、R1、R2上IPv4&#xff0b;v6配置 四、IPV6部分ip配置 五、IPV6部分OSPF&BGP协议配置 Ⅰ、 ospf Ⅱ、bgp 六、联通网络 需求&#xff1a; 1、AR1处于IPV4&#xff0c;也有IPV6的地址&#xff0c;有两个环回 2、AR45678处…

Golang Gin 请求参数绑定与多数据格式处理

之前学习了使用Gin框架的Engine的默认路由功能解析HTTP请求。现在我们来学习gin框架的参数绑定操作和请求结果返回格式。 处理POST请求时&#xff0c;使用context.PostForm或者context.DefaultPostForm获取客户端表单提交的数据。 像上述这种只有username和password两个字段的表…

CS:APP 第7章链接分步编译(cpp/cc1/as/ld)遇到的问题

环境 WSL Ubuntu 22.04.2 LTS gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0 问题 问题一 cc1 命令找不到 cc1 命令在 /usr/lib/gcc/x86_64-linux-gnu/11/cc1 里&#xff0c;注意不同操作系统等可能 cc1 的位置不一样&#xff0c;可以使用 find 或者 locate 命令搜索。 通过下…

聊点技术 | 架构瘦身,让Bonree ONE跑得更轻

4月21日&#xff0c;博睿数据ONE有引力2023春季产品发布会圆满落幕&#xff0c;一体化智能可观测平台Bonree ONE 2023春季正式版正式发布&#xff0c;这一次发布的版本更轻、更强、更智能。 Bonree ONE在上一版基础上削减50%组件数量&#xff0c;下架两大高耗能组件&#xff0c…

97-TCP为什么要有一个“TIME_WAIT“的状态

文章目录 1.TCP为什么要有一个"TIME_WAIT"的状态(1) 可靠的终止 TCP 连接。(2) 保证让迟来的 TCP 报文有足够的时间被识别并被丢弃 ; 2.拓展带外数据 1.TCP为什么要有一个"TIME_WAIT"的状态 "TIME_WAIT"状态存在的原因主要有两点: (1) 可靠的终…

成功经验分享,Nacos注册中心实践,带你玩转Nacos

1、什么是 Nacos &#xff1f; 官方&#xff1a;一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。 集&#xff1a; 注册中心配置中心服务管理 平台 nacos的特性包括&#xff1a; 服务发现和服务健康监测动态配置服务动态…

行人检测(人体检测)4:C++实现人体检测(含源码,可实时人体检测)

行人检测(人体检测)4&#xff1a;C实现人体检测(含源码&#xff0c;可实时人体检测) 目录 行人检测(人体检测)4&#xff1a;C实现人体检测(含源码&#xff0c;可实时人体检测) 1. 前言 2. 行人检测(人体检测)检测模型&#xff08;YOLOv5&#xff09; &#xff08;1&#xf…

谈「效」风生 | 如何找到现有研发体系的「内耗问题」?

#第3期&#xff1a;如何找到现有研发体系的「内耗问题」&#xff1f;# 在上一期《谈到提升效能&#xff0c;我们应该如何下手&#xff1f;》我们聊到开始做研发效能的四个要点&#xff1a;评估现有流程、引入自动化工具、建立度量指标、持续改进。本期就围绕「评估现有研发体系…

二次创业接地气、强内功,三只松鼠从一棵树出发重造“人设”

民以食为天&#xff0c;自古以来&#xff0c;“吃”都是一门浅显与深奥并存的生意。产业链看似简单&#xff1a;种、收、制、卖&#xff0c;却足以令众多企业为之前赴后继十年、百年。 三只松鼠&#xff0c;正在这条变革的道路上砥砺前行。自去年4月开启全面转型以来&#xff…

C++ 赋值运算符重载

赋值运算符重载 运算符重载&#xff1a; C为了增强代码的可读性&#xff0c;可以对 运算符 进行重载&#xff0c;运算符重载 就是具有特殊函数名的函数&#xff0c;这个函数也具有返回值类型&#xff0c;函数名字和参数列表&#xff0c;它的返回值和参数列表的形式和普通函数…

基于SAM的二次开发案例收集分享

一、AnyLabeling[1]——制作人&#xff1a;vietanhdev AnyLabeling LabelImg Labelme Improved UI Autolabeling AnyLabeling软件是一个集成了YOLO、Segment Anything模型&#xff08;AI支持&#xff09;的高效数据标注工具&#xff0c;它可以通过点击目标的方式完成目标检…

商业银行财富管理“智能原生”能力呈阶梯化,AI助力商业模式趋向多元化发展

易观&#xff1a;金融业的财富管理从经营角度来看&#xff0c;是“客户与渠道管理场景运营产品研发”三位一体共同构建以客户为中心&#xff0c;数据驱动的业务经营体系。其中&#xff0c;“客户与渠道管理”是将客户利益作为核心目标&#xff0c;通过升级用户体验、客户全生命…

获奖名单公布|香港BlockBooster x Moonbeam黑客松圆满收官

Moonbeam基金会赞助的”Into the Socialverse”主题的BlockBooster黑客松于近日落幕。该活动由BlockBooster、OKX、Gitcoin和OxU香港区块链俱乐部联合主办&#xff0c;共有22个开发团队参赛。经过多位评委的严格筛选&#xff0c;3支优秀团队脱颖而出&#xff0c;获得Moonbeam基…

zookeeper集群命令使用

1.zookeeper脚本使用(地址填写集群中任意一个主机地址) 连接客户端命令行 /etc/zookeeper/zookeeper/bin/zkCli.sh -server 10.1.60.112:2181 启动zookeeper服务 /etc/zookeeper/zookeeper/bin/zkServer.sh start 停止zookeeper服务 /etc/zookeeper/zookeeper/bin/zkServer…