面试题33:把数组排成最小的数

来源:互联网 发布:激战2一折商城网络延迟 编辑:程序博客网 时间:2024/06/05 16:48
package com.abuge;/** * 面试题33:把数组排成最小的数 * 输入一个正整数数组,把数组里所有数字拼接成一个数,打印成能拼接出所有数字中最小的一个。 * 例如输入数组{3, 32, 321}则打印三个数字能排成的最小数字 * 思路: * 1、将整型数转换为字符串,可以解决隐形大数问题 * 2、制定比较新规则 */import java.util.Arrays;import java.util.Comparator;class MyComprator implements Comparator<String>{String result1 = null; String result2 = null; @Overridepublic int compare(String str1, String str2) {result1 = str1+ str2;result2 = str2 + str1;return result1.compareTo(result2);}}public class GetMinNum{public static String getMinNum(int[] a, int len){if(a == null || len <= 0)return null;String[] tmp = new String[len];//将数组转换为字符串for(int i = 0; i < len; i++){tmp[i] = String.valueOf(a[i]);}//按照新规则排序Arrays.sort(tmp, new MyComprator());StringBuilder sb = new StringBuilder();for(int i = 0; i < len; i++){sb.append(tmp[i]);}return sb.toString();}public static void main(String[] args) {int[] a = {456, 3, 1};int len = a.length;System.out.println(getMinNum(a, len));}}

0 0
原创粉丝点击