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 is 9534330
.
Note: The result may be very large, so you need to return a string instead of an integer.
Credits:
Special thanks to @ts for adding this problem and creating all test cases.
public class Solution {
public String largestNumber(int[] nums) {
Integer[] n = new Integer[nums.length];
for(int i = 0 ; i <nums.length; i++){
n[i] = nums[i];
}
Arrays.sort(n, new Comparator<Integer>(){
public int compare(Integer i1, Integer i2){
if(i1 == i2) return 0;
String s1 = "" + i1 + i2;
String s2 = "" + i2 + i1;
return s2.compareTo(s1);
}
});
StringBuilder sb = new StringBuilder();
for(int i : n){
sb.append(i);
}
while(sb.length() > 1 && sb.charAt(0) == '0'){
sb.deleteCharAt(0);
}
return sb.toString();
}
}