标签:leetcode
Given a list of non negative integers, arrange them such that they form the largest number.
For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330.
Note: The result may be very large, so you need to return a string instead of an integer.
public class Solution {
public String largestNumber(int[] num) {
int n = num.length;
if (n < 1) return "";
//把数组转化为字符串数组
String[] strs = new String[n];
for (int i = 0; i < n; i++) {
strs[i] = String.valueOf(num[i]);
}
//按照数字在结果中的位置排序
Arrays.sort(strs, new Cmp());
//把所有字符串拼接在一起
String ans = "";
for (int i = n - 1; i >= 0; i--) {
ans = ans.concat(strs[i]);
}
//去掉数字开头的0,如输入[0, 0]
int i = 0;
while (i < n && ans.charAt(i) == '0') {
i++;
}
if (i == n) return "0";
return ans;
}
//比较方法很简单:如果[a在前b在后]组成的结果大于[b在前a在后]组成的结果,那么a>b。
class Cmp implements Comparator<String>{
@Override
public int compare(String a, String b) {
String ab = a.concat(b);
String ba = b.concat(a);
return Integer.parseInt(ab) - Integer.parseInt(ba);
}
}
}
http://blog.csdn.net/ljiabin/article/details/42676433
java.util.Arrays
此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。
static int binarySearch(byte[] a,
byte key)
使用二分搜索法来搜索指定的 byte 型数组,以获得指定的值。
static int binarySearch(byte[] a,
int fromIndex, int toIndex, byte key)
使用二分搜索法来搜索指定的 byte 型数组的范围,以获得指定的值。
在这里,byte[] 可以使int[],String[],float[],double,short[],long[],Object[],char[],key改成相应的类型
static boolean[] copyOf(boolean[] original,
int newLength) (深度复制)
复制指定的数组,截取或用 false 填充(如有必要),以使副本具有指定的长度。
static boolean[] copyOfRange(boolean[] original,
int from, int to)
将指定数组的指定范围复制到一个新数组。
static boolean equals(boolean[] a,
boolean[] a2)
如果两个指定的 boolean 型数组彼此相等,则返回 true。
static void fill(boolean[] a,
boolean val)
将指定的 boolean 值分配给指定 boolean 型数组的每个元素。
static void fill(boolean[] a,
int fromIndex, int toIndex, boolean val)
将指定的 boolean 值分配给指定 boolean 型数组指定范围中的每个元素
static void sort(byte[] a)
对指定的 byte 型数组按数字升序进行排序。
static void sort(byte[] a,
int fromIndex, int toIndex)
对指定 byte 型数组的指定范围按数字升序进行排序。
static void sort(T[] a, Comparator<?
super T> c)
根据指定比较器产生的顺序对指定对象数组进行排序。
static
<T> void sort(T[] a, Comparator<? super T> c)
根据指定比较器产生的顺序对指定对象数组进行排序。
static String toString(boolean[] a)
返回指定数组内容的字符串表示形式。
标签:leetcode
原文地址:http://blog.csdn.net/havedream_one/article/details/42741921