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.
class Solution {
public String largestNumber(int[] nums) {
int len = nums.length;
if (len == 0){
return "0";
}
String[] s = new String[len];
for (int i = 0; i < len; ++ i){
s[i] = String.valueOf(nums[i]);
}
Arrays.sort(s, new Comparator<String>(){
@Override
public int compare(String s0, String s1){
String ss0 = s0 + s1;
String ss1 = s1 + s0;
return ss1.compareTo(ss0);
}
});
if (s[0].equals("0")){
return "0";
}
StringBuilder sb = new StringBuilder();
for (String val : s){
sb.append(val);
}
return sb.toString();
}
}