LeetCode 179. 最大数(Largest Number) 21

179. 最大数
179. Largest Number

题目描述
给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。

每日一算法2019/5/24Day 21LeetCode179. Largest Number

示例 1:

输入: [10,2] 输出: 210

示例 2:

输入: [3,30,34,5,9] 输出: 9534330

说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。

Java 实现

import java.util.Arrays;
import java.util.Comparator;

class Solution {
	public String largestNumber(int[] nums) {
		if (nums == null || nums.length == 0) {
			return null;
		}
		int n = nums.length;
		String[] strArr = new String[n];
		for (int i = 0; i < n; i++) {
			strArr[i] = Integer.toString(nums[i]);
		}
		Comparator<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);
			}
		};
		Arrays.sort(strArr, comp);
		if (strArr[0].charAt(0) == '0') {
			return "0";
		}
		StringBuffer sb = new StringBuffer();
		for (String str : strArr) {
			sb.append(str);
		}
		return sb.toString();
	}
}

参考资料

原文地址:https://www.cnblogs.com/hgnulb/p/10916065.html