179.Largest-Number

179. Largest Number

题目地址

https://leetcode.com/problems/largest-number/

题目描述

Given a list of non negative integers, arrange them such that they form the largest number.

Example 1:
Input: [10,2]
Output: "210"

Example 2:
Input: [3,30,34,5,9]
Output: "9534330"

Note: The result may be very large, so you need to return a string instead of an integer.

代码

Approach #1 Sorting via Custom Comparator

class Solution {
  public String largestNumber(int[] nums) {
        String[] asStrs = new String[nums.length];
    for (int i = 0; i < nums.length; i++) {
      asStrs[i] = String.valueOf(nums[i]);
    }

    Arrays.sort(asStrs, new LargerNumberComparator());

    if (asStrs[0].equals("0")) {
      return "0";
    }

    String largestNumberStr = new String();
    for (String numAsStr : asStrs) {
      largestNumStr += numAsStr;
    }

    return largestNumberStr;
  }

  private class LargerNumberComparator implements Comparator<String> {
    @Override
    public int compare(String a, String b) {
      String order1 = a + b;
      String order2 = b + a;
      return order2.compareTo(order1);
    }
  }

}

Last updated