您的位置:首页 > 其它

微软算法100题68 用数组排成最小的数

2015-12-07 11:36 573 查看
68.把数组排成最小的数。
题目:输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的
一个。
例如输入数组{32, 321},则输出这两个能排成的最小数字32132。
请给出解决问题的算法,并证明该算法

package com.rui.microsoft;

import java.util.Arrays;
import java.util.Comparator;

public class Test68_Minimum {

public static void main(String[] args) {
int[] a = {3,2,123};
Test68_Minimum app = new Test68_Minimum();
String res = app.smallest(a);
System.out.println(res);
}

String smallest(int[] a){
Integer[] aux = new Integer[a.length];
for(int i = 0; i < a.length; i++){
aux[i] = a[i];
}

Arrays.sort(aux, new Comparator<Integer>() {

@Override
public int compare(Integer o1, Integer o2) {
return ("" + o1 + o2).compareTo("" + o2 + o1);
}
});

StringBuilder sb = new StringBuilder();
for(int i = 0; i < aux.length; i++){
sb.append(aux[i]);
}
return sb.toString();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: