Skip to content

Instantly share code, notes, and snippets.

@malisetti
Last active January 13, 2017 05:54
Show Gist options
  • Save malisetti/6ed5d1e7e276dd33cdfda0b1e2c16d99 to your computer and use it in GitHub Desktop.
Save malisetti/6ed5d1e7e276dd33cdfda0b1e2c16d99 to your computer and use it in GitHub Desktop.
next big number
var num = "9123";
var digits = num.split("");
function nextBig(position, digits) {
var currentNumber = digits[position];
for (var i = position-1; i >= 0; i--) {
if (currentNumber > digits[i]) {
currentNumber = digits[i];
return i;
}
}
return -1;
}
function nextFinder(j, digits) {
if (j < 1 || digits.length <= 1) {
return digits.join("");
}
for (var i = j; i >= 0; i--) {
var pos = nextBig(i, digits);
if (pos == -1) {
return digits.join("");
}
if (pos !== i) {
//swap
var nextBigNum = digits[i];
digits[i] = digits[pos];
digits[pos] = nextBigNum;
return digits.join("");
}
}
return nextFinder(j--, digits);
}
console.log(nextFinder(digits.length - 1, digits));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment