classSolution{ publicintlargestInteger(int num){ char[] arr = String.valueOf(num).toCharArray(); int len = arr.length; int[] res = newint[len]; int ans = 0; ArrayList<Integer> oddIdx = new ArrayList<>(); ArrayList<Integer> odd = new ArrayList<>(); ArrayList<Integer> evenIdx = new ArrayList<>(); ArrayList<Integer> even = new ArrayList<>(); for (int i = 0; i < len; i++) { int cur = arr[i] - '0'; if (cur % 2 == 1) { odd.add(cur); oddIdx.add(i); } else { even.add(cur); evenIdx.add(i); } } odd.sort(Comparator.reverseOrder()); even.sort(Comparator.reverseOrder()); for (int i = 0; i < oddIdx.size(); i++) { res[oddIdx.get(i)] = odd.get(i); } for (int i = 0; i < evenIdx.size(); i++) { res[evenIdx.get(i)] = even.get(i); } for (int i = 0; i < res.length; i++) { ans = ans * 10 + res[i]; } return ans; } }