劍指offer 第三十二題 把數組排成最小的數字 java

題目:

思路: 就是簡單排序,不過排序的標準是自定義的

             首先分析兩個數  32,321 這兩個數字合成32132,32321這兩個數字,明顯後者更大。這時候可以這樣分析,AB和BA的問題,AB和BA都是兩數合成字符串。然後冒泡排序。  

 

 

代碼:


public class Solution {
    public String PrintMinNumber(int [] numbers) {
        String result ="";
        if (numbers.length ==0)
            return result;
        if (numbers.length ==1)
            return String.valueOf(numbers[0]);
        for(int i=0;i<numbers.length-1;i++){
            for(int j=i+1;j<numbers.length;j++){
                if (CompareBy(numbers[i],numbers[j])==false){
                    int tem =numbers[i];
                    numbers[i] =numbers[j];
                    numbers[j] =tem;
                }
            }
        }
        for(int i=0;i<numbers.length;i++){
            result+=String.valueOf(numbers[i]);
        }
        return result;
    }

    private boolean CompareBy(int number, int number1) {
        //如果是小的話,返回true;
        //如果是大的話,返回false;
        //boolean result =true;
        String str1 =String.valueOf(number)+String.valueOf(number1);
        String str2 =String.valueOf(number1)+String.valueOf(number);
        if (str1.compareTo(str2) >0)
            return false;
        else
            return true;
    }
}

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