几个数拼接生成最大数(java实现)

时间:2023-01-02 17:42:20

问题:现有多个数字,试问如何将其拼接生成最大的数。
例如:{12121,12,568,7} 生成数:7568121212121.

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Main main=new Main();
Scanner cin=new Scanner(System.in);

String arr[]=(cin.nextLine()).split(" ");
System.out.println(main.MaxNum(arr));

}

public int MaxNum(String[] str){
int ret=0;

for (int j = 0; j < str.length; j++) {
for (int i = 0; i < str.length; i++) {
if (this.biJiao(str[j], str[i])) {
String temp=str[j];
str[j]=str[i];
str[i]=temp;
}
}
}
String num="";
for (int m = 0; m < str.length; m++) {
num=num+str[m];
}

ret=Integer.parseInt(num);


return ret;
}

public boolean biJiao(String str1,String str2){

int length=str1.length()+str2.length();

str1+=str2;
str2+=str1;

for (int i = 0; i < length; i++) {

if (Integer.parseInt(str1.substring(i, i+1))>Integer.parseInt(str2.substring(i, i+1))) {
return true;
}
if (Integer.parseInt(str1.substring(i, i+1))<Integer.parseInt(str2.substring(i, i+1))) {
return false;
}
}

return true;
}


}