33 把数组排成最小数
来源:互联网 发布:手机远程控制电脑 知乎 编辑:程序博客网 时间:2024/06/01 10:42
描述:
实现代码:
import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.Comparator;public class Solution {public static void main(String[] args) {int arr[]={3,32,321};int arr1[]={3,32,321};System.out.println("方法一");String res=PrintMinNumber(arr);System.out.println(res);// 方法二 String res2=PrintMinNumber2(arr1);System.out.println("方法二");System.out.println(res);}public static String PrintMinNumber2(int [] numbers) { int n; String s=""; ArrayList<Integer> list=new ArrayList<Integer>(); n=numbers.length; for(int i=0;i<n;i++){ list.add(numbers[i]);//将数组放入arrayList中 } //实现了Comparator接口的compare方法,将集合元素按照compare方法的规则进行排序 Collections.sort(list,new Comparator<Integer>(){ @Override public int compare(Integer str1, Integer str2) { // TODO Auto-generated method stub String s1=str1+""+str2; String s2=str2+""+str1; return s1.compareTo(s2); } }); for(int j:list){ s+=j; } return s; }public static String PrintMinNumber(int [] numbers) {String res="";ArrayList<String> minNumber=new ArrayList<String>();for (int i : numbers) {minNumber.add(String.valueOf(i));}Collections.sort(minNumber, new Comparator<String>() {@Overridepublic int compare(String a, String b) {int len1 = a.length();int len2 = b.length();int lim = Math.min(len1, len2);char v1[] = a.toCharArray();char v2[] = b.toCharArray();int k = 0;while (k < lim) {char c1 = v1[k];char c2 = v2[k];if (c1 != c2) {return c1 - c2;}k++;}if (len1>lim) {returncompare(a.substring(lim), b);}else if (len2>lim) {returncompare(a,b.substring(lim));}else {return len1 - len2;}}});//System.out.println(minNumber);StringBuilder sb=new StringBuilder();for (String i : minNumber) {sb.append(i);}return sb.toString();}}
测试结果:
0 0
- 33 - 把数组排成最小的数
- 33 把数组排成最小数
- 33-把数组排成最小的数
- 把数组排成最小数
- 把数组排成最小数
- 把数组排成最小数
- 面试题33:把数组排成最小的数
- 剑指offer-33:把数组排成最小的数
- 【剑指offer】面试题33:把数组排成最小数
- 面试题33:把数组排成最小的数
- 面试题33 把数组排成最小的数
- 剑指offer 33 把数组排成最小的数
- 面试题33:把数组排成最小的数
- 面试题33_把数组排成最小的数
- 面试题33把数组排成最小的数
- 《剑指offer》:[33]把数组排成最小的数
- 面试题33:把数组排成最小的数
- 面试题33:把数组排成最小的数
- JAVAWEB其他知识
- Java序列化基础
- C语言学习-函数
- 一个实用的Eclipse快捷键
- (转)大型网站的系统架构
- 33 把数组排成最小数
- oracle 分页查询语句
- javamail异常发送邮件出现Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/ut
- 关于在win7上使用colinux蓝屏,死机解决方案,亲测可用
- OpenCV内存池管理(二)
- C++基础:函数的调用优化
- Redis简介,安装和配置,停止,卸载(图解方式)
- UVa725-Division
- 可执行的Python程序