编程题day08

链接:https://www.nowcoder.com/questionTerminal/8fecd3f8ba334add803bf2a06af1b993
来源:牛客网
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
Java(javac 1.8)重置
https://www.nowcoder.com/questionTerminal/8fecd3f8ba334add803bf2a06af1b993

import java.util.ArrayList;

public class Solution {
    public String PrintMinNumber(int [] numbers) {
        String temp="";
        StringBuffer bf=new StringBuffer();
        String[] str=new String[numbers.length];
        for(int i=0;i<numbers.length;i++){
         str[i]=String.valueOf(numbers[i]);
        }
        //冒泡排序把数组里的字符串按两个字符串之和的大小排序即不满足条件调换相邻位置
        for(int i=0;i<str.length-1;i++){
            for(int j=0;j<str.length-i-1;j++){
                if(!(compare(str[j],str[j+1]))){
                    temp=str[j];
                    str[j]=str[j+1];
                    str[j+1]=temp;
                }
            }
        }
        //把调整后的字符串加入到StringBuffer
        for(int k=0;k<str.length;k++){
            bf.append(str[k]);
        }
        return bf.toString().trim();//返回字符串
    }
    //比较相邻两个字符串相加之和的大小大即返回false小返回true
   public boolean compare(String str1,String str2){
       if((str1+str2).compareTo(str2+str1)<0){
           return true;
       }else{
           return false;
       }
   }
}

猜你喜欢

转载自blog.csdn.net/qq_40163148/article/details/83215813