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

最大数

时间:2016-06-26 16:37:12      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:

题目

给出一组非负整数,重新排列他们的顺序把他们组成一个最大的整数。

给出 [1, 20, 23, 4, 8],返回组合最大的整数应为8423201

 

解题:

对于20 23 可以组成2023 和2320 显然2320更大应该排在前面

对于5 51 可以组成551 和 515 显然551更大应该排在前面

所以在比较两个数大小的规则应该将两个数链接起来后再比较大小

对于left、right

我们应该比较:leftright 和rightleft 的大小

public String largestNumber(int[] num) {
    ArrayList<String> list = new ArrayList<>();
    for(int i: num){
        list.add(i+"");
    }
    
    Collections.sort(list, new Comparator<String>(){
        public int compare(String left, String right){
            String leftRight = left+right;
            String rightLeft = right+left;
            return leftRight.compareTo(rightLeft);
        }
    });
    
    String result = "";
    for(int i=list.size()-1; i>=0; i--){
        result += list.get(i);
    }
    
    int i=0;
    while(i<result.length() && result.charAt(i)==‘0‘){
        i++;
    }
    if(i==result.length()){
        return "0";
    }
    
    return result.substring(i);
}

 

最大数

标签:

原文地址:http://www.cnblogs.com/hesier/p/5617945.html

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