排列组合去重算法挑战 w3c

主要算法 就是 用总的排列次数 减去 随机2个一样的字符 的总排列次数 在加上重复的次数

function permAlone(str) {
    var param = str.split("");
    
    var json = {};
    var n = 0;
    var alltimes = jiechang(str.length);
    var map = {};
   var k = 0;
    for(var x in param){ 
         if(!json[param[x]]){
            k++; 
         }
        if (json[param[x]] && !map[param[x]]) {
             n++;
            
             map[param[x]] = 1;
        } 
        json[param[x]] = 1;
    }
    if(k == 1){
       return 0;
    }
    var reducetimes = jiechang(str.length - 1) * Math.pow(2,n);
    var chongfutimes = jiechang(str.length - n) * Math.pow(2,n);
    if(n == 1){
        chongfutimes = 0;
    }
    return alltimes - reducetimes + chongfutimes;
}
function jiechang(n){
    if(n < 1){
        return 1;
    }
    return n * jiechang(n-1);
}
permAlone('aaabb');
发布了36 篇原创文章 · 获赞 13 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_41392105/article/details/100691202
w3c
今日推荐