給定一組非負整數,重新排列它們的順序使之組成一個最大的整數。
示例 1:
輸入: [10,2]
輸出: 210
示例 2:
輸入: [3,30,34,5,9]
輸出: 9534330
說明: 輸出結果可能非常大,所以你需要返回一個字符串而不是整數。
//這個題其實和最小字典序一樣
public class Solution {
public String largestNumber(int[] num) {
//判空
if(num == null || num.length == 0) return "";
String[] s_num = new String[num.length];
//把int 轉爲 String
for(int i = 0; i < num.length; i++)
s_num[i] = String.valueOf(num[i]);
//其實就是一個貪心 str1 + str2 > str2 + str1 返回str1 否則 返回str2
//排個序就完了
Arrays.sort(s_num, (str1,str2) -> (str2 + str1).compareTo(str1 + str2));
//處理 0,0 的問題
if(s_num[0].charAt(0) == '0') return "0";
//字符串數組轉爲 字符
StringBuilder sb = new StringBuilder();
for(String s: s_num) {
sb.append(s);
}
return sb.toString();
}
}