1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| class Solution { public String minNumber(int[] nums) { Integer[] integers = new Integer[nums.length]; for (int i = 0; i < nums.length; i++) { integers[i] = nums[i]; } Arrays.sort(integers, (o1, o2) -> { if (o1.intValue() == o2.intValue()) { return 0; } if (o1.toString().length() == o2.toString().length()) { return o1.compareTo(o2); } else { return cmp(o1.toString(), o2.toString()); } }); StringBuilder ans = new StringBuilder(); for (int i = 0; i < nums.length; i++) { ans.append(integers[i]); } System.out.println(Arrays.toString(integers)); return ans.toString(); }
public int cmp(String s1, String s2) { int tmp = cmp(s1.charAt(0), s2.charAt(0)); if (tmp != 0) { return tmp; } int num1 = Integer.parseInt(s1 + s2); int num2 = Integer.parseInt(s2 + s1); return Integer.compare(num1, num2); }
private int cmp(char c1, char c2) { return Character.compare(c1, c2); } }
|