首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在javascript中找到n个位置中m个字符的所有可能排列方式

如何在javascript中找到n个位置中m个字符的所有可能排列方式
EN

Stack Overflow用户
提问于 2020-06-10 21:33:20
回答 1查看 25关注 0票数 0

我有一个数组,比方说一万个数字。我需要过滤掉具有特定模式的数字。我有一些像这样的映射,

奇数/偶数

如果数字是奇数-> O

如果数字是偶数-> E

H/M/L

如果数字在7-9 -> H之间

如果数字在4-6 -> M之间

如果数字在0-3 -> L之间

现在我们取一个数字,比方说982。在O/E中,它将在H/M/L中转换为OEE,它将转换为HHL

我想给具有可变位数的数字提供动态过滤器。

m->要排列的字符数

n->否要排列字符的位置表示如果是两位数,则可能排列的数目

数字可以是O或E

O/E、m=2、n=2

2*2 =4

OO、OE、EO、EE

数字可以是H、M或L

H/M/L、m=2、n=3

3*3 =9

HH、MM、LL、HM、MH、HL、LH、ML、LM

现在对于一个三位数的数字,可能的排列数量

O/E、m=3、n=2

2*2*2 =8

OOO,EEE,OOE,OEO,EOO,OEE,EOE,EOO

H/M/L、m=3、n=3

3*3*3 = 27

对于更多的位数和更多的分类因子

那么,当m和n可以是动态的时,我如何找到m个字符在n个位置(*带重复)的所有可能的排列。

我在网上寻找解决方案,找到了类似这个问题的解决方案,但不是这个确切的问题。

下面是我找到的代码:

代码语言:javascript
复制
//Write a JavaScript function that generates all combinations of a string.
function substrings(str1)
{
var array1 = [];
  for (var x = 0, y=1; x < str1.length; x++,y++) 
  {
   array1[x]=str1.substring(x, y);
    }
var combi = [];
var temp= "";
var slent = Math.pow(2, array1.length);

for (var i = 0; i < slent ; i++)
{
    temp= "";
    for (var j=0;j<array1.length;j++) {
        if ((i & Math.pow(2,j))){ 
            temp += array1[j];
        }
    }
    if (temp !== "")
    {
        combi.push(temp);
    }
}
  console.log(combi.join("\n"));
}

substrings("dog");

这并不能解决我的问题。

EN

回答 1

Stack Overflow用户

发布于 2020-06-11 00:03:51

我找到了答案:

代码语言:javascript
复制
findAllPossibleArrangements(charset, prefix, n, k){//n-> No of all given alphabets, k->length of desired string
        if(k==0){
            console.log(prefix);
            return;
        }

        for(var i = 0; i < n; i++){
            var newPrefix = prefix  + charset[i];
            this.findAllPossibleArrangements(charset, newPrefix, n, k-1);
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62304910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档