给定—组整数(非负),重排顺序后输出一个最大的整数。
示例1
输入:[10,9]输出:910
说明:输出结果可能非常大,所以你需要返回一个字符串而不是整数。
输入描述
数字组合
输出描述
最大的整数
用例
输入
10 9
输出
910
java
package odTest;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class maxInt {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
LinkedList<Integer> list = new LinkedList<Integer>();
int[] inputs = Arrays.stream(scanner.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray() ;
for(int i=0;i<inputs.length;i++) {
list=judgeSequence(list,inputs[i]);
}
list.forEach(i->{System.out.print(i+"");});
}
private static LinkedList<Integer> judgeSequence(LinkedList<Integer> list, int input) {
if(list.size()==0) {
list.add(input);
return list;
}
for(int i=0;i<list.size();i++) {
if(judgeMethod(list.get(i)+"",input+"")) {
list.add(i, input);
return list;
}
if(i == list.size()-1) {
list.add(input);
}
}
return list;
}
//如果返回为true,就交换两个数的位置
private static boolean judgeMethod(String s, String input) {
char[] x = s.toCharArray();
char[] y = input.toCharArray();
//获取最短长度
int len = x.length>=y.length?y.length:x.length;
for(int i=0;i<len;i++) {
//重头开始一一判断,只要输入大于就返回true,小于就返回false,相等就判断长度,短的放前面。
if(x[i]<y[i]) {
return true;
}else if(x[i]>y[i]) {
return false;
}else {
return x.length>=y.length?true:false;
}
}
return false;
}
}