Advertisement
Guest User

Untitled

a guest
Sep 20th, 2017
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.33 KB | None | 0 0
  1. import java.util.Arrays;
  2. import java.util.Comparator;
  3. import java.util.Stack;
  4.  
  5. public class MaxMergedNumberForIntArray {
  6.  
  7.    private static Comparator<Integer> MAX_MERGED_COMPARATOR = (x, y) -> {
  8.  
  9.       final Stack<Integer> xDigits = getStuckWithDigits(x);
  10.       final Stack<Integer> yDigits = getStuckWithDigits(y);
  11.  
  12.       while (!xDigits.empty() && !yDigits.empty()) {
  13.          final Integer xValue = xDigits.pop();
  14.          final Integer yValue = yDigits.pop();
  15.  
  16.          if (xValue > yValue) {
  17.             return 1;
  18.          } else if (xValue < yValue) {
  19.             return -1;
  20.          }
  21.       }
  22.       if (xDigits.empty() && yDigits.empty()) {
  23.          return 0;
  24.       } else if (xDigits.empty() && !yDigits.empty()) {
  25.          return 1;
  26.       } else {
  27.          return -1;
  28.       }
  29.    };
  30.  
  31.    private static Stack<Integer> getStuckWithDigits(Integer o1) {
  32.       final Stack<Integer> o1Integers = new Stack<>();
  33.       while (o1 > 0) {
  34.          o1Integers.push(o1 % 10);
  35.          o1 /= 10;
  36.       }
  37.       return o1Integers;
  38.    }
  39.  
  40.  
  41.    public static String maxMergedNumber(Integer... numbers) {
  42.       Arrays.sort(numbers, MAX_MERGED_COMPARATOR.reversed());
  43.  
  44.       StringBuilder sb = new StringBuilder();
  45.       for (Integer number : numbers) {
  46.          sb.append(number);
  47.       }
  48.       return sb.toString();
  49.    }
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement