Array.sort()按字典順序排序實現

輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。例如輸入數組{3,32,321},則打印出這三個數字能排成的最小數字爲321323。
思路:轉化爲String類型的數組,然後排序
排序方法,s1+s2 和s2 + s1誰大誰往前
如果不轉化形態的話,需要不斷判斷大小,比較複雜
直接放代碼了:

public String PrintMinNumber(int[] numbers) {
    if (numbers == null || numbers.length == 0)
        return "";
    int n = numbers.length;
    String[] nums = new String[n];
    for (int i = 0; i < n; i++)
        nums[i] = numbers[i] + "";
    Arrays.sort(nums, (s1, s2) -> (s1 + s2).compareTo(s2 + s1));
    String ret = "";
    for (String str : nums)
        ret += str;
    return ret;
}

代碼中的難點在於Arrays.sort(),這個函數經常用,單關鍵在於實現了自定義地排序
在這裏插入圖片描述
由上圖可知,可以自定義排序規則,
那行代碼解讀爲,Array.sort對num排序,排序方法,s1,s2兩個參數,根據s1+s2與s2+s1大小排序。

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