179. Largest Number**

来源:互联网 发布:linux xware 编辑:程序博客网 时间:2024/06/08 16:47

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 class Solution {     public String largestNumber(int[] num) {if(num == null || num.length == 0)    return "";// Convert int array to String array, so we can sort later onString[] s_num = new String[num.length];for(int i = 0; i < num.length; i++)    s_num[i] = String.valueOf(num[i]);// Comparator to decide which string should come first in concatenationComparator<String> comp = new Comparator<String>(){    @Override    public int compare(String str1, String str2){        String s1 = str1 + str2;String s2 = str2 + str1;return s2.compareTo(s1); // reverse order here, so we can do append() later    }        };Arrays.sort(s_num, comp);                // An extreme edge case by lc, say you have only a bunch of 0 in your int array                if(s_num[0].charAt(0) == '0')                    return "0";            StringBuilder sb = new StringBuilder();for(String s: s_num)            sb.append(s);return sb.toString();}}

总结:Override,多态中重写父类。重新定义comparator


0 0