leetcode 179 最大數

給定一組非負整數,重新排列它們的順序使之組成一個最大的整數。

示例 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();
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章