Skip to content

Instantly share code, notes, and snippets.

@YuJianrong
Created July 20, 2012 10:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save YuJianrong/3150049 to your computer and use it in GitHub Desktop.
Save YuJianrong/3150049 to your computer and use it in GitHub Desktop.
permutation string
function nextPerm (str) {
var arr = str.split("").reverse();
for (var i=1; i<arr.length; ++i) {
if ( arr[i] < arr[i-1] ) {
break;
}
};
if ( i >= arr.length ) {
return false;
};
var remove = arr[i];
var lowArr = arr.splice(0,i+1);
lowArr.sort(function(a,b) {return a<b;});
var insert = lowArr.splice( lowArr.indexOf(remove) -1 , 1 );
return lowArr.concat(insert, arr).reverse().join("");
}
var start = "abcde";
for (var i=0; i<120; ++i) {
console.log(start);
start = nextPerm(start);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment