ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

的Permute字符串,直到它匹配一些输入?

2019-10-27 17:33:48  阅读:132  来源: 互联网

标签:permutation javascript algorithm


我在网上查询了此结果,但结果不多,因为很难用几句话来形容.

基本上,我需要一个函数,例如puntil,它接受参数字符串.基本上,函数排列直到字符串等于参数为止.

例如,如果您运行puntil(‘ab’),则应在函数内部执行:

一种
b
C
d
Ë
F
G
H
一世
Ĵ
ķ


ñ
Ø
p
q
[R
s
Ť
ü
v
w
X
ÿ
ž
a
Ab!比赛

另一个例子,对于puntil(‘abcd’)

一种
b
C
d
Ë
F
G
H
一世
Ĵ
ķ


ñ
Ø
p
q
[R
s
Ť
ü
v
w
X
ÿ
ž
a
b
交流电
广告
e
f
g

i
j
ak

上午
一个
o
ap

AR


au
影音
w
斧头
y
z

…等等等等
直到匹配abcd.

基本上是无限排列直到匹配.

有任何想法吗?

解决方法:

这是fiddle

 var alphabet = ['a','b','c'];//,'d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'];

 var output = "";
 var match = "cccc";  //<----------- match here

//This is your main function 
function permutate() {

    var d = 0;   // d for depth

    while (true) {

       //Your main alphabet iteration             
       for (var i=0; i<alphabet.length; i++){

          //First level 
          if (d === 0) {
             console.log(alphabet[i])
             output = alphabet[i];
          }    
          else
             iterator(alphabet[i], d);   //Call iterator for d > 0

          if (output === match)
             return;
          }


          d++;  //Increase the depth
       }
 }


 //This function runs n depths of iterations
 function iterator(s, depth){

    if (depth === 0)
       return;

    for (var i=0; i<alphabet.length; i++){

       if (depth > 1)
          iterator(s + alphabet[i], depth - 1)
       else {
          console.log(s + alphabet[i]);
          output = s + alphabet[i];
       } 

       if (output === match)
          return;
    }

 };                

说明:

您的程序需要遍历这样的字母树

[a] 
    -[a]
        -[a] 
             -[a]...
             -[b]...

         [b] ...
    -[b] -
         -[a]...
         -[b]...

[b] - ...
[c] - ...

如果不需要您首先完成每个深度的要求,则可以通过常规递归函数轻松完成此操作.

因此,我们需要一个特殊的迭代器(深度)函数,该函数可以执行请求的嵌套迭代次数(深度).

因此main函数可以调用深度增加的迭代器(d).

就这样!!

警告:这只是一个原型.这可以进行优化和改进.它使用全局变量来简化演示.您的真实程序应避免使用全局变量.如果匹配字太长,我还建议在setTimeout中调用iterator().
n个深度只能受您的资源限制.

标签:permutation,javascript,algorithm
来源: https://codeday.me/bug/20191027/1946118.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有