给定一个任意长度的整型数组,求数组内能组合出来的最大字符串(整数)?
例如数组:{ 323, 32, 1, 9569, 4, 6, 92, 636, 63, 998 }
将其添加到List排序后输出:[1, 32, 323, 4, 63, 636, 6, 92, 9569, 998]
最后从后往前遍历集合结果,将它添加到一个字符串输出:9989569926636634323321
思想就不多说了,直接看代码。
package cn.edu.ccit.fangwh;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class MaxNum {
public static void main(String[] args) {
int[] num = { 323, 32, 1, 9569, 4, 6, 92, 636, 63, 998 };
String s = getMax(num);
System.out.println(s);
}
public static String getMax(int[] num) {
String res = new String();
List<String> list = new ArrayList<>();
for (int i = 0; i < num.length; i++) {
list.add(num[i] + "");
}
list.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if((o1+o2).compareTo(o2+o1)>0){
return 1;
}else{
return -1;
}
}
});
System.out.println(list);
for (int i = list.size() - 1; i >= 0; i--) {
res += list.get(i);
}
return res;
}
}
结果:
[1, 32, 323, 4, 63, 636, 6, 92, 9569, 998]
9989569926636634323321