Back to course home
0% completed
Vote For New Content
Works although not the fastest
Davide Pugliese
Mar 11, 2024
TreeMap<Integer, Integer> map = new TreeMap<>((a, b) -> b - a); for (int i = 0; i < num.length(); i++) { var key = num.charAt(i) - '0'; System.out.println("Key above is: " + key); map.put(key, map.getOrDefault(key, 0) + 1); } boolean odd = false; int k = -1; Deque<Character> stack = new ArrayDeque<>(); Deque<Character> queue = new ArrayDeque<>(); for (var entry: map.entrySet()) { var key = entry.getKey(); for (int i = 0; i < entry.getValue() / 2; i++) { queue.offer((char)(key + (int)'0')); } if (entry.getValue() % 2 == 1 && odd == false) { k = key; odd = true; } } StringBuilder result = new StringBuilder(); if (queue.isEmpty()) { result.append((char)(k + (int)'0')); } while(!queue.isEmpty()) { var p = queue.peek(); result.append(queue.poll()); stack.push(p); if (queue.peek() == null && odd == true) { result.append((char)(k + (int)'0')); } } while(!stack.isEmpty()) { result.append(stack.pop()); } var r = result.toString(); int i = 0; while (i < r.length() && r.charAt(i) == '0') { i++; } if(i == r.length() && r.charAt(0) == '0') { return "0"; } var g = ""; if ( r.length() > 1 && r.charAt(0) == '0') { int left = 0; int right = r.length() - 1; while(left <= right) { if (r.charAt(0) == '0' && r.charAt(left) == r.charAt(right) && r.charAt(left) == '0') { left++; right--; continue; } g+=r.charAt(left); left++; right--; } } if (!g.isEmpty()) { return g; } return r;
0
0
Comments
Comments
On this page