YChalk

Next Biggest Number

Feb 19th, 2022 (edited)
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.39 KB | None | 0 0
  1.     public static long nextBiggerNumber(long n)
  2.     {
  3.       String[] sDigits = String.valueOf(n).split("");
  4.       if (sDigits.length == 1) return -1;
  5.      
  6.       int[] digits = new int[sDigits.length];
  7.      
  8.       for (int i = 0; i < digits.length; i++){
  9.           digits[i] = Integer.valueOf(sDigits[i]);
  10.       }
  11.      
  12.       boolean swap = false;
  13.       int index = 0;
  14.      
  15.       for (int i = digits.length-2; i >=0; i--){
  16.           if (swap) break;
  17.           for (int j = digits.length-1; j > i; j--){
  18.               if (digits[i] < digits[j]){
  19.                   int temp = digits[i];
  20.                   digits[i] = digits[j];
  21.                   digits[j] = temp;
  22.                   swap = true;
  23.                   index = i;
  24.                   break;
  25.               }
  26.           }
  27.       }
  28.      
  29.       if (!swap) return -1;
  30.      
  31.       for (int i = index+1; i < digits.length-1; i++){
  32.           for (int j = i+1; j < digits.length; j++){
  33.               if (digits[i] > digits[j]){
  34.                   int temp = digits[i];
  35.                   digits[i] = digits[j];
  36.                   digits[j] = temp;
  37.                   i = index;
  38.                   break;
  39.               }
  40.           }
  41.       }
  42.      
  43.       StringBuffer sb = new StringBuffer("");
  44.      
  45.       for (Integer i : digits){
  46.           sb.append(String.valueOf(i));
  47.       }
  48.      
  49.       return Long.valueOf(sb.toString());
  50.     }
Add Comment
Please, Sign In to add comment