LeetCode 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.

public String largestNumber(int[] nums) {
    Queue<String> queue = new PriorityQueue<>(new Comparator<String>(){
        public int compare(String num1, String num2) {
            return (num2+num1).compareTo(num1+num2);
        }
    });
    for(int num:nums) queue.offer(num+"");
    StringBuilder sb = new StringBuilder();
    while(queue.size() > 0) {
        sb.append(queue.poll());
    }
    int n = sb.length(), i=0;
    while(i < n) {
        if(sb.charAt(i) != '0') break;
        i++;
    }
    if(i == n) return "0";
    return sb.substring(i);
}

猜你喜欢

转载自yuanhsh.iteye.com/blog/2233855
今日推荐