179. Largest Number 发表于 2022-01-17 Sort123456789101112131415161718class Solution { public String largestNumber(int[] nums) { String[] numStrArray = new String[nums.length]; for (int i = 0; i < nums.length; i++) { numStrArray[i] = String.valueOf(nums[i]); } Arrays.sort(numStrArray, (o1, o2) -> (o2 + o1).compareTo(o1 + o2)); String res = String.join("", numStrArray); // 注意处理多个前导 0 的情况,如 nums: [0, 0] int firstNonZeroIndex = 0; while (firstNonZeroIndex < res.length() - 1 && res.charAt(firstNonZeroIndex) == '0') { firstNonZeroIndex++; } return res.substring(firstNonZeroIndex); }} Sort1234567891011121314151617181920212223242526272829303132333435363738class Solution { public String largestNumber(int[] nums) { List<Integer> numList = new ArrayList<>(nums.length); for (int num : nums) { numList.add(num); } numList.sort((x, y) -> { // xy > yx long product = 10; while (product <= y) { product *= 10; } long a = x * product + y; product = 10; while (product <= x) { product *= 10; } long b = y * product + x; return a == b ? 0 : (a - b > 0 ? -1 : 1); // 注意此处的顺序 }); StringBuilder sb = new StringBuilder(); for (int num : numList) { sb.append(num); } String res = sb.toString(); // 注意处理多个前导 0 的情况,如 nums: [0, 0] int firstNonZeroIndex = 0; while (firstNonZeroIndex < res.length() - 1 && res.charAt(firstNonZeroIndex) == '0') { firstNonZeroIndex++; } return res.substring(firstNonZeroIndex); }} Reference179. Largest Number