179. Largest Number

重点在于新建一个Comparator, 用于数组的排序。举例来说,比如原数组为[9,5],有两种排序的可能性,分别为9559,因为str2小于str1,所以返回-1,相当于原数组中的两个数字不需要调换顺序。

public String largestNumber(int[] nums) {
    if (nums == null || nums.length == 0) return "";

    String[] strs = new String[nums.length];

    for (int i = 0; i < nums.length; i++) {
        strs[i] = String.valueOf(nums[i]);
    }

    Comparator<String> c = new Comparator<String>() {
        @Override
        public int compare(String s1, String s2) {
            String str1 = s1 + s2;
            String str2 = s2 + s1;
            return str2.compareTo(str1);
        }
    };
    Arrays.sort(strs, c);
    if (strs[0].equals("0")) return "0";

    StringBuffer sb = new StringBuffer();
    for (String s: strs) {
        sb.append(s);
    }
    return sb.toString();
}

results matching ""

    No results matching ""