剑指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;
    }
}

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