编写一个能将给定非负整数列表中的数字排列成最大数字的函数。

来源:互联网 发布:费城实验是真的吗 知乎 编辑:程序博客网 时间:2024/06/04 20:08
//编写一个能将给定非负整数列表中的数字排列成最大数字的函数。例如,给定[50,2,1,9],最大数字为95021。public class Test4{public static void main(String[] args){int[] list={85,840,860,760,9};System.out.println(getMaxList(list));}//获取最大值列表public static String getMaxList(int[] list){String[] str_list=new String[list.length];String mergeStr="";for(int i=0;i<list.length;i++){str_list[i]=Integer.toString(list[i]);}for(int i=0;i<str_list.length-1;i++){for(int j=i+1;j<str_list.length;j++){String[] str=linkNum(str_list[i],str_list[j]);str_list[i]=str[0];str_list[j]=str[1];}}for(int i=0;i<str_list.length;i++){mergeStr+=str_list[i];}return mergeStr;}//把俩数拼接成最大的数字public static String[] linkNum(String str1,String str2){int min_length=str1.length()<=str2.length()?str1.length():str2.length();String[] str3=new String[2];str3[0]=str1;str3[1]=str2;int i=1;for(;i<=min_length;i++){if(str1.substring(i-1,i).compareTo(str2.substring(i-1,i))<0){str3[0]=str2;str3[1]=str1;break;}else if(str1.substring(i-1,i).compareTo(str2.substring(i-1,i))>0){break;}}return str3;}}

0 0