Q : You have given a positive number. You have to find a number which is immediate bigger than that by using same digits available in the number. use same digits with same number of time, coming in positive integer and if a small number is not possible then we have to return -1.

For example: (1) You have given a number 7585 , your output should be 7855 . (2) 7111, return –1

Algorithm:

Code:

## 1 comment:

put the number in a char array arr[]

scan the array from last to begining.

if arr[i] > arr[i-1] swap them and break

If you scan the array without swapping element, return -1.

put the array back to an integer.

So for 4385, you would swap 8 and 3

O(n+n+n) where n is the number of digits

Post a Comment