把数组排成最小的数

来源:互联网 发布:表演系 知乎 编辑:程序博客网 时间:2024/06/04 23:33

问题

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

思路

比较简单的思路:把一个数组按某一种规则排序;
这种规则是nm>mn,则m

Code

import java.util.ArrayList;public class Solution {    public String PrintMinNumber(int [] numbers) {        for(int i=0;i<numbers.length;i++){            for(int j=i+1;j<numbers.length;j++){                if(s1HigherThanS2(numbers[i],numbers[j])){                    int temp=numbers[i];                    numbers[i]=numbers[j];                    numbers[j]=temp;                }            }        }        String result="";        for(int k=0;k<numbers.length;k++){            result+=String.valueOf(numbers[k]);        }        return result;    }    public boolean s1HigherThanS2(int s1,int s2){         String left=String.valueOf(s1)+String.valueOf(s2);         String right=String.valueOf(s2)+String.valueOf(s1);         if(left.compareTo(right)>0){             return true;         }else{             return false;          }            }}
0 0
原创粉丝点击