Grokking Microsoft Coding Interview
Ask Author
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