题解 | #把数组排成最小的数#Java不使用字符串比较

把数组排成最小的数

http://www.nowcoder.com/practice/8fecd3f8ba334add803bf2a06af1b993

import java.util.*;

public class Solution {
    public String PrintMinNumber(int [] numbers) {
        String[] str = new String[numbers.length];
        for(int i = 0; i < numbers.length; i++){
            str[i] = String.valueOf(numbers[i]);
        }

        Arrays.sort(str,(a,b)->{
                List<Integer> aList = convert(a);
                List<Integer> bList = convert(b);
                int i = 0, j = 0;
                while(i < aList.size() || j < bList.size()){
                    int at = i < aList.size() ? aList.get(i) : aList.get(aList.size()-1);
                    int bt = j < bList.size() ? bList.get(i) : bList.get(bList.size()-1);
                    if(at != bt){
                        return at - bt;
                    }
                    i++;
                    j++;
                }
                return 1;
        });
        String res = new String();
        for(String s : str){
           res += s;
        } 
        return res;
    }
    List<Integer> convert(String a){
        int ai = Integer.valueOf(a);
        List<Integer> list = new ArrayList<>();
        while(ai > 0){
            list.add(ai % 10);
            ai /= 10;
        }
        Collections.reverse(list);
        return list;
    }
}
全部评论

相关推荐

神哥不得了:神哥来啦~1.建议不要包装,很容易问穿2.没日常也能找到暑期3.简历模板换一下,字体和版式看着好难受,而且最好压缩到一页,技术的倒数第2和3重复啦,项目建议换两个高质量的上去,如果时间够的话,八股就把高频top50的题目多巩固几遍,吃透,注意不要找假高频,这样绝对能找到暑期
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务