JZ45 把陣列排成最小的數
描述
輸入一個非負整數陣列numbers,把陣列里所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個,
例如輸入陣列[3,32,321],則列印出這三個數字能排成的最小數字為321323,
1.輸出結果可能非常大,所以你需要回傳一個字串而不是整數
2.拼接起來的數字可能會有前導 0,最后結果不需要去掉前導 0
具體做法
step 1:優先判斷空陣列的特殊情況,
step 2:將陣列中的數字元素轉換成字串型別,
step 3:多載排序比較為字串型別的x + y < y + x,然后進行排序,
step 4:將排序結果再按照字串拼接成一個整體,
代碼
package mid.JZ45把陣列排成最小的數;
import java.util.Arrays;
import java.util.Comparator;
public class Solution {
public String PrintMinNumber(int [] numbers) {
if(numbers == null || numbers.length == 0) {
return "";
}
String[] strArr = new String[numbers.length];
for (int i = 0; i < numbers.length; i++) {
strArr[i] = numbers[i] + "";
}
Arrays.sort(strArr, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
String s1 = o1 + o2;
String s2 = o2 + o1;
return s1.compareTo(s2);
}
});
StringBuilder res = new StringBuilder();
for (String s : strArr) {
res.append(s);
}
return res.toString();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/539757.html
標籤:其他
