js实现N个元素的排列组合及存在相同元素的处理方法

js实现N个元素的排列组合及存在相同元素的处理方法

不能有相同的元素,相同号码替换成对应字母处理

方法一:

复制代码
var zhixuan = new Array();
//不能有相同的元素,相同号码替换成对应字母处理
function arrange(arr,s){
    for(var i=0,length=arr.length; i<length; i++) {
        if(s.length == length - 1) {
            if(s.indexOf(arr[i]) < 0) {
                zhixuan.push(s + arr[i]);
            }
            continue;
        }
        if(s.indexOf(arr[i]) < 0) {
            arrange(arr,s+arr[i]);
        }
    }
}
复制代码

方法二:

复制代码
//var arr1 = [1,2,3,3,4]; 不能有相同的,相同号码替换成对应字母处理
function permute(temArr,testArr){
   var permuteArr=[];
   var arr = testArr;
   function innerPermute(temArr){
         for(var i=0,len=arr.length; i<len; i++) {
             if(temArr.length == len - 1) {
                 if(temArr.indexOf(arr[i]) < 0) {
                     permuteArr.push(temArr.concat(arr[i]));
                 }
                 continue;
             }
             if(temArr.indexOf(arr[i]) < 0) {
                 innerPermute(temArr.concat(arr[i]));
             }
        }
    }
    innerPermute(temArr);
    return permuteArr;     
}
复制代码

相同号码替换对应字母处理方法:

复制代码
String.prototype.myReplace=function(f,e){
    var reg=new RegExp(f,"g"); 
    return this.replace(reg,e);
}

var nlist = ["0","1","2","3","4","5","6","7","8","9"];
var clist = ["a","b","c","d","e","f","g","h","i","j"];

function replaceCode(number){
    for(var i=0; i<10; i++){
        if(nlist[i] == number){
            return clist[i];
        }
    }
}
复制代码

使用方法示例:

复制代码
var arr = [1,2,3,3,4];
//替换相同的数字为对应字母 arr[
3] = replaceCode(arr[3]);
//调用方法一 arrange(arr,
''); //使用方法一的全局变量 var outstr = zhixuan.join(",");
//替换对应的字符串为数字
for(var i=0; i<10; i++){ outstr = outstr.myReplace(clist[i], nlist[i]); }
//输出内容 $(
"#showdiv").html(outstr);
复制代码

 

posted @   大自然的流风  阅读(938)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2017-02-22 svn导出文件夹到另外目录export
2016-02-22 nginx的权限问题(Permission denied)解决办法
2014-02-22 用crontab执行shell把top命令按日期追加到文件
点击右上角即可分享
微信分享提示