Given a list of non-negative integers nums, arrange them such that they form the largest number and return it.
Since the result may be very large, so you need to return a string instead of an integer.
Example 1:
Input: nums = [10,2] Output: "210"
Example 2:
Input: nums = [3,30,34,5,9] Output: "9534330"
Constraints:
1 <= nums.length <= 1000 <= nums[i] <= 109class Solution {
public String largestNumber(int[] nums) {
String[] s = Arrays.stream(nums).mapToObj(k -> String.valueOf((Integer) k)).toArray(String[]::new);
Arrays.sort(s, (a, b) -> (b + a).compareTo(a + b));
// System.out.println(Arrays.toString(s));
if (s[0].equals("0")) // implies all zero elements
return "0";
StringBuilder sb = new StringBuilder();
for (String w : s)
sb.append(w);
return sb.toString();
}
}