给出一组非负整数,重新排列他们的顺序把他们组成一个最大的整数。
例
给出 [1, 20, 23, 4, 8],返回组合最大的整数应为 8423201
给出 [1, 201, 20, 9, 8],返回组合最大的整数应为 98202011
给出 [1, 203, 20, 9, 8],返回组合最大的整数应为 98203201
思路: 将两个整型数字(a,b)转换城字符串,拼接在一起(ab或ba),然后再将字符串转换城整型,判断ab小还是ba小,把小的数放在数组的最后面,类似冒泡。按降序排列,最后将排列好的数组拼接成一个字符串
public class App
{
public static void main(String[] args )
{
Integer[] input = {3, 30, 34, 5, 9};
int inputLength = input.length;
int tmp;
while (inputLength!=0){
for (int j=1;j<inputLength; j++){
if (App.exchange(input[j-1],input[j])){
tmp = input[j-1];
input[j-1] = input[j];
input[j] = tmp;
}
}
inputLength--;
}
StringBuffer sb = new StringBuffer();
for (int a : input){
sb.append(a);
}
System.out.println(sb);
}
public static boolean exchange(int a,int b){
StringBuffer sb1 = new StringBuffer();
sb1.append(a).append(b);
StringBuffer sb2 = new StringBuffer();
sb2.append(b).append(a);
int m1 = Integer.parseInt(String.valueOf(sb1));
int m2 = Integer.parseInt(String.valueOf(sb2));
if (m1 < m2){
return true;
}else{
return false;
}
}
}