[LeetCode179] Largest Number

Given a list of non negative integers, arrange them such that they form the largest number.

For example, given[3, 30, 34, 5, 9], the largest formed number is9534330.

Note: The result may be very large, so you need to return a string instead of an integer.

solution:

sort the array, difficult is how to compare two number.

simple way is to concat two number, ie. 30,34

a1 =3034 a2 = 3430 a2>a1

So you need implement custome compartor

public String largestNumber(int[] nums) {if(nums.length <=0) return "";int len = nums.length;String[] numStrings = new String[len];for(int i=0;i<len;i++){numStrings[i] = String.valueOf(nums[i]);}Arrays.sort(numStrings, new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {// TODO Auto-generated method stubString ab = o1.concat(o2);String ba = o2.concat(o1);long a1 = Long.valueOf(ab);long b1 = Long.valueOf(ba);return a1>b1 ? 1: (a1==b1 ? 0 : -1);}});StringBuilder builder = new StringBuilder();for(int i=len-1;i>=0;i–){builder.append(numStrings[i]);}return builder.toString().replaceFirst("^0+(?!$)", "");}

版权声明:本文为博主原创文章,未经博主允许不得转载。

,要想捉大鱼,不能怕水深。要想摘玫瑰,就得不怕刺。

[LeetCode179] Largest Number

相关文章:

你感兴趣的文章:

标签云: