码迷,mamicode.com
首页 > 其他好文 > 详细

179. Largest Number

时间:2016-07-09 08:12:54      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

转成String,然后按照一定的规律排序,最后再连起来,如果给的值里全是0(一个或多个),那就返回“0”,否则返回连起来的结果。

 

排序的规则:

如果一位一位比较,如果某个数在前面的数字比较大,那么这个数就放前面。

如果两个数不一样长,并且前面的数字都相同,那么就那短的那个,和长的那个后面多出来的半截比。

 

比如说32>13. 322<32,329>32

 

 1     public String largestNumber(int[] nums) {
 2         if (nums.length == 0) {
 3             return null;
 4         }
 5         List<String> strs = new ArrayList<String>();
 6         for(int each: nums) {
 7             strs.add(String.valueOf(each));
 8         }
 9         Collections.sort(strs, new Comparator<String>(){
10             public int compare(String o1, String o2) {
11                 int len1 = o1.length();
12                 int len2 = o2.length();
13                 boolean shorter = len1 < len2;
14                 int max = shorter? len1: len2;
15                 for(int i = 0; i < max; i++) {
16                     if(o1.charAt(i) != o2.charAt(i)) {
17                         return o2.charAt(i) - o1.charAt(i);
18                     }
19                 }
20                 if(len1 != len2) {
21                     if(shorter) {
22                         return compare(o1, o2.substring(max, len2));
23                     } else {
24                         return compare(o1.substring(max, len1), o2);
25                     }
26                 } else {
27                     return 0;
28                 }
29             }
30         });
31         String res = "";
32         for(String each: strs) {
33             res += each;   
34         }
35         return res.charAt(0) == ‘0‘? "0": res;
36     }

 

179. Largest Number

标签:

原文地址:http://www.cnblogs.com/warmland/p/5655119.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!