1. 程式人生 > >編寫一個能將給定非負整數列表中的數字排列成最大數字的函式。

編寫一個能將給定非負整數列表中的數字排列成最大數字的函式。

//編寫一個能將給定非負整數列表中的數字排列成最大數字的函式。例如,給定[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;		
	}

}