给定一个整数(字符串也适用)序列,重新排列,得到最大的结果,比如31,3,35,7,9根据排列后得到组合 9735331,返回的是string类型

来源:互联网 发布:违规网络音乐 编辑:程序博客网 时间:2024/06/05 17:39
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();
}
}
0 0
原创粉丝点击