[LintCode/LeetCode] Largest Number [Comparator的使用]

news/2023/12/10 15:10:19

Problem

Given a list of non negative integers, arrange them such that they form the largest number.

Example

Given [1, 20, 23, 4, 8], the largest formed number is 8423201.

Note

先将nums[]转化为String[],否则无法使用Comparator,其实转为Integer[]也可以,这里用String为例。
然后就是最关键的一步:创造一个Comparator,用以从大到小排列所有的strs[]元素。注意:return (s2+s1).compareTo(s1+s2); 这里的顺序不能变。
再将排列好的str[i]元素放入一个StringBuilder sb里,然后将sb转化为String result

如果这个result的第一个字符是0,那么我们不希望看到返回一个类似“000000000”的字符串,只要返回单字符的字符串"0"就可以了。
否则,返回result

Solution

public class Solution {public String largestNumber(int[] nums) {String[] strs = new String[nums.length];for (int i = 0; i < nums.length; i++) {strs[i] = Integer.toString(nums[i]);}Arrays.sort(strs, new Comparator<String>(){public int compare(String s1, String s2) {return (s2 + s1).compareTo(s1 + s2);}});StringBuilder sb = new StringBuilder();for (int i = 0; i < strs.length; i++) {sb.append(strs[i]);}String result = sb.toString();if (result.charAt(0) == '0') return "0";return result;}
}

https://dhexx.cn/news/show-2002909.html

相关文章

vba 如何从右开始搜索特定字符位置_以多个给定符号作为间隔拆分字符串

大家好&#xff0c;我们今日讲解"VBA信息获取与处理"教程中第十四个专题"Split函数提取数据信息的深入讲解"的第三节"以多个给定符号作为间隔拆分字符串"&#xff0c;这个专题是非常实用的知识点&#xff0c;希望大家能掌握利用。教程会提供配套…

javaweb项目启动的时候报No WebApplicationContext found

2019独角兽企业重金招聘Python工程师标准>>> 今天一个项目启动的时候报错&#xff1a;No WebApplicationContext found: no ContextLoaderListener registered? 所更改的变动就是在webxml中增加了一个一个来代理类&#xff0c;用这个代理类实现原先的一个filter功能…

转:理解Progressive enhancement

转自&#xff1a;http://ued.taobao.com/blog/2008/10/09/understanding-progressiveen-hancement-chs-translation/自 1994 年开始&#xff0c;Web 开发社群就擂起了名为“平稳退化 (Graceful Degradation)” 的大鼓。这是一个从工程界引入的概念&#xff0c;其主旨是为那些最…

java基于springboot的毕业生信息招聘平台(java+springboot+vue+mysql)

运行环境&#xff1a; 开发工具:IDEA /Eclipse 数据库:MYSQL5.7 应用服务:Tomcat7/Tomcat8 使用框架springbootvue 项目介绍 毕业生信息招聘平台&#xff0c;主要的模块包括查看管理员&#xff1b;首页、个人中心、企业管理、空中宣讲会管理、招聘岗位管理、毕业生管理、个人…

JavaScript之基础-14 JavaScript Object对象(概述、创建对象、属性、方法)

一、JavaScript 对象概述对象概述- 通用定义- 对象时需求场景中的名词(如人、事、物)在程序中的表示- JavaScript 中&#xff0c;除了string、number、boolean、null、undefined之外&#xff0c;其它的数据都是对象&#xff0c;如数组、日期甚至函数等- ECMA-262定义- 属性的无…

BCB中的目录选择对话框的实现

有现成的函数。而且有2个不同的界面。其中一个是以前的Win31的界面。 AnsiString Path; if (SelectDirectory("请选择目录","",Path)) ShowMessage(Path); 出现的界面如下&#xff1a; 下面是Win31的界面的&#xff1a; …

php 通信服务,即时通信是一种以什么方式为主的通信服务

即时通信是一种以“同步通信”方式为主进行消息交换的通信服务。即时通信是指能够即时发送和接收互联网消息等的业务&#xff0c;它允许两人或多人使用网路即时的传递文字讯息、档案、语音与视频交流。本教程操作环境&#xff1a;windows7系统、Dell G3电脑。与电子邮件的通信方…

java基于springboot的汉服推广网站(java+springboot+vue)

运行环境&#xff1a; 开发工具:IDEA /Eclipse 数据库:MYSQL5.7 应用服务:Tomcat7/Tomcat8 使用框架springbootvue 项目介绍 随着我国国民知识水平的提高和一些大学生等人群的喜欢&#xff0c;汉服也逐渐的再次出现在了我们生活中的个个角落中&#xff0c;很多高校甚至出现了…

数据结构3.2--栈的链式实现

2019独角兽企业重金招聘Python工程师标准>>> 这次没有贴代码。只说一下思路。类似于线性表的链式实现&#xff0c;以头结点为栈顶&#xff0c;尾节点为栈底。入栈操作即在头结点前添加数据&#xff0c;出栈操作为去除头结点。 转载于:https://my.oschina.net/suproc…

NTpassword(MD4)

获得本地的帐户密码的md4值&#xff0c;同时可以修改其用户密码&#xff01; http://www.rayfile.com/files/81693863-7e0e-11dd-aa34-0019d11a795f/ 转载于:https://www.cnblogs.com/ahuo/archive/2008/09/09/1287293.html