最大数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最大数相关的知识,希望对你有一定的参考价值。
题目
给出一组非负整数,重新排列他们的顺序把他们组成一个最大的整数。
给出 [1, 20, 23, 4, 8]
,返回组合最大的整数应为8423201
。
解题:
对于20 23 可以组成2023 和2320 显然2320更大应该排在前面
对于5 51 可以组成551 和 515 显然551更大应该排在前面
所以在比较两个数大小的规则应该将两个数链接起来后再比较大小
对于left、right
我们应该比较:leftright 和rightleft 的大小
public String largestNumber(int[] num) { ArrayList<String> list = new ArrayList<>(); for(int i: num){ list.add(i+""); } Collections.sort(list, new Comparator<String>(){ public int compare(String left, String right){ String leftRight = left+right; String rightLeft = right+left; return leftRight.compareTo(rightLeft); } }); String result = ""; for(int i=list.size()-1; i>=0; i--){ result += list.get(i); } int i=0; while(i<result.length() && result.charAt(i)==‘0‘){ i++; } if(i==result.length()){ return "0"; } return result.substring(i); }
以上是关于最大数的主要内容,如果未能解决你的问题,请参考以下文章