题目内容: 把数组排成最小的数
这道题,用暴力的方法是可以解决的(将所有组合组合起来,返回最小值),然而很蠢 ? 。于是我看了一下 讨论
尝试一
结果:答案正确:恭喜!您提交的程序通过了所有的测试用例
代码:
import java.util.ArrayList;
import java.util.Comparator;
public class Solution {
public String PrintMinNumber(int [] numbers) {
/* 特殊情况处理*/
if(numbers==null || numbers.length==0){
return new String();
}
/* 将int型元素转换为String型元素*/
ArrayList<String> result=new ArrayList<>();
for(int i=0;i<numbers.length;++i){
result.add(""+numbers[i]);
}
/* 对result进行排序(按照a1a2<a2a1,则a1排在前面,a2在后),至于这个排序算符你是自己写还是调用java类库,无所谓了*/
result.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
int component1=Integer.parseInt(o1+o2);
int component2=Integer.parseInt(o2+o1);
if(component1<component2){
return -1;
}else if(component1==component2){
return 0;
}else{
return 1;
}
}
});
/* 将result拼接为Strign输出*/
String r="";
for(int i=0;i<result.size();++i){
r+=result.get(i);
}
return r;
}
}
思路:
- 将int型元素转换为String型元素
- 对result进行排序(按照a1a2<a2a1,则a1排在前面,a2在后),至于这个排序算符你是自己写还是调用java类库,无所谓了
- 将result拼接为String输出