Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static long nextBiggerNumber(long n)
- {
- String[] sDigits = String.valueOf(n).split("");
- if (sDigits.length == 1) return -1;
- int[] digits = new int[sDigits.length];
- for (int i = 0; i < digits.length; i++){
- digits[i] = Integer.valueOf(sDigits[i]);
- }
- boolean swap = false;
- int index = 0;
- for (int i = digits.length-2; i >=0; i--){
- if (swap) break;
- for (int j = digits.length-1; j > i; j--){
- if (digits[i] < digits[j]){
- int temp = digits[i];
- digits[i] = digits[j];
- digits[j] = temp;
- swap = true;
- index = i;
- break;
- }
- }
- }
- if (!swap) return -1;
- for (int i = index+1; i < digits.length-1; i++){
- for (int j = i+1; j < digits.length; j++){
- if (digits[i] > digits[j]){
- int temp = digits[i];
- digits[i] = digits[j];
- digits[j] = temp;
- i = index;
- break;
- }
- }
- }
- StringBuffer sb = new StringBuffer("");
- for (Integer i : digits){
- sb.append(String.valueOf(i));
- }
- return Long.valueOf(sb.toString());
- }
Add Comment
Please, Sign In to add comment