# 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

```java
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);
    }
  }

}
```
