179. Largest Number

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

For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330.

Note: The result may be very large, so you need to return a string instead of an integer.

含义:给定多个非负数,将他们排列成一个最大数,用string返回

 

复制代码
 1     public String largestNumber(int[] nums) {
 2         if(nums == null || nums.length == 0)
 3             return "";
 4 
 5         // Convert int array to String array, so we can sort later on
 6         String[] s_num = new String[nums.length];
 7         for(int i = 0; i < nums.length; i++)
 8             s_num[i] = String.valueOf(nums[i]);
 9 
10         // Comparator to decide which string should come first in concatenation
11         Comparator<String> comp = new Comparator<String>(){
12             @Override
13             public int compare(String str1, String str2){
14                 String s1 = str1 + str2;
15                 String s2 = str2 + str1;
16                 return s2.compareTo(s1); // reverse order here, so we can do append() later
17             }
18         };
19 
20         Arrays.sort(s_num, comp);//由顶到底,前一个元素加后一个元素的值,大于后一个元素加前一个元素的值
21         // An extreme edge case by lc, say you have only a bunch of 0 in your int array
22         if(s_num[0].charAt(0) == '0')
23             return "0";
24 
25         StringBuilder sb = new StringBuilder();
26         for(String s: s_num)
27             sb.append(s);
28 
29         return sb.toString();        
30     }
复制代码

 

posted @   daniel456  阅读(93)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示