把数组排成最小的数

来源:互联网 发布:sql server 认证 编辑:程序博客网 时间:2024/06/03 14:01

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

思路:排序需要比较两个元素的“大小” ,两个字符串拼成一个字符串,比较字典顺序,如果前边的大返回true,如果后边的大返回false,
排序完成之后再拼接成一个字符串。

import java.util.ArrayList;public class Solution {    public String PrintMinNumber(int [] numbers) {        for(int i = numbers.length; i > 0; i--){            for(int j = 0; j < i -1 ;j++){                String str1 = String.valueOf(numbers[j]);                String str2 = String.valueOf(numbers[j+1]);                if(compare(str1,str2)){                    int temp = numbers[j];                    numbers[j] = numbers[j+1];                    numbers[j+1] = temp;                }            }        }        StringBuilder sb = new StringBuilder();        for(int i = 0; i < numbers.length;i++){            sb.append(numbers[i]);        }        return sb.toString();    }    public boolean compare(String str1,String str2){        String s1 = str1.concat(str2);        String s2 = str2.concat(str1);        if(s1.compareTo(s2) > 0){            return true;        }else{            return false;        }    }}
原创粉丝点击