I am trying to use the heap algorithm to find the possible permutations of a string. The problem is that I create a variable perm
global to count every time I have a permutation but I can not see it in an alert.
var perm=0;
function perm(str){
var map={};
var cnt=[];
var letters=[];
var length=str.length;
var result=[];
str=str.split("");
str=str.sort();
alert(str);
for(var i=0;i<str.length;i++){
if(map[str[i]]) map[str[i]].cnt++;
else map[str[i]] ={val:str[i],cnt:1};
}
for(var item in map){
letters.push(map[item].val);
cnt.push(map[item].cnt);
}
permAlone(letters,cnt,result,length,0);
}
function permAlone(str,cnt,result,length,level) {
if(level===length){
perm++;
return;
}
for(var i=0;i<str.length;i++){
//noprotect
if(cnt[i]===0) {continue;}
result[level]=str[i];
cnt[i]--;
permAlone(str,cnt,result,length,level+1);
cnt[i]++;
}
}
perm('aab');
alert(perm);