LintCode-最大数

给出一组非负整数,重新排列他们的顺序把他们组成一个最大的整数。

 注意事项

最后的结果可能很大,所以我们返回一个字符串来代替这个整数。

样例

给出 [1, 20, 23, 4, 8],返回组合最大的整数应为8423201


package LintCode;

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

public class 最大数 {
	public String largestNumber(int[] num) {
		StringBuffer str = new StringBuffer();
		if (num == null || 0 == num.length)
			return "";
		int len = num.length;
		String[] strNum = new String[len];
		for (int i = 0; i < len; i++) {
			strNum[i] = "" + num[i];
		}
		Arrays.sort(strNum, new StringComparator());
		int zeroNum = 0;
		while (zeroNum < len - 1 && "0".equals(strNum[zeroNum])) {
			zeroNum++;
		}
		for (int i = zeroNum; i < len; i++) {
			str.append(strNum[i]);
		}
		return str.toString();
	}

	class StringComparator implements Comparator<String> {
		public int compare(String s1, String s2) {
			return (s2 + s1).compareTo(s1 + s2);
		}
	}

	public static void main(String[] args) {
		int[] num = { 1, 20, 23, 4, 8 };
		String s = new 最大数().largestNumber(num);
	}
}


你可能感兴趣的:(lintcode)