給定一個整數(字符串也適用)序列,重新排列,得到最大的結果,比如31,3,35,7,9根據排列後得到組合 9735331,返回的是string類型

package sort;
/**
 * 給定一個整數序列,重新排列,得到最大的結果,比如31,3,35,7,9根據排列後得到組合
 * 9735331,返回的是string類型
 */
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;


public class Sort_Demo {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
String str=cin.nextLine();
String[] strarr=str.split(",");
String s=maxFun(strarr);
System.out.println("max="+s);
}


private static String maxFun(String[] strarr) {
if(strarr==null||strarr.length==0)
return "";
Arrays.sort(strarr,new Comparator<String>() {
public int compare(String s1,String s2){
int length1=s1.length();
int length2=s2.length();
StringBuilder sb1=new StringBuilder();
StringBuilder sb2=new StringBuilder();
sb1.append(s1);
sb2.append(s2);
//方法一,重新compare方法
//把s1與s2字符長度變爲一樣,短的後面添加兩者長度差的元素,比如s1=2345,s2=34,則把s2=3434
if(length1>length2){
sb2.append(s2.substring(0, length1-length2));
}
else{
sb1.append(s1.substring(0, length2-length1));
}
return sb2.toString().compareTo(sb1.toString());
}
});
//方法二,重新compare方法
// public int compare(String s1,String s2){
// int length1=s1.length();
// int length2=s2.length();
//// System.out.println("s1="+s1+"  s2="+s2);
//// System.out.println("l1="+length1+"  l2="+length2);
// StringBuilder sb1=new StringBuilder();
// StringBuilder sb2=new StringBuilder();
// for(int i=0;i<length2;i++)//爲了使sb1與sb2的位數相同
// sb1.append(s1);
//
// for (int i = 0;i<length1;i++) {
// sb2.append(s2);
// }
// System.out.println(sb2.toString().compareTo(sb1.toString()));
// return sb2.toString().compareTo(sb1.toString());
// }
// });
StringBuilder sb=new StringBuilder();
for (String string : strarr) {
sb.append(string);
}
return sb.toString();
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章