【发布时间】:2012-01-12 23:39:50
【问题描述】:
我需要找回我的密码,我知道一些字母,但忘记了我在其余部分中使用了哪些字符。我需要一种方法来生成密码的所有可能排列,给定一些已知字符和一些未知字符。例如,我想在文本框中输入像“mic??s??t”这样的短语,程序会生成所有可能的排列。在这种情况下,我知道只有几个字符可能用来代替这些问号,但我希望程序可以选择置换所有字符 AZ、az、0-9、/symbols/ 等,或者特定的字符集,如 EG、ty、1-4 等,通过第二个文本框作为字符串输入。
使用所有字符,它可能会生成一个类似的列表
micAAsAAt
micAAsABt
micAAsACT
micAAsADt
....
仅使用有限的字符集,例如 E-G,它看起来像
老鼠
老鼠EFt
小鼠EGt
小鼠场效应管
老鼠
....
如果这样做的唯一方法是生成每个排列周期,无论是否是通配符,对于 N 长度的单词,然后用正则表达式模式检查每个排列以过滤掉无用的,我可以接受(它会生成 256^N 个可能的组合)。否则,我宁愿能够仅使用递归(我需要帮助)来生成所有可能的数组。最后,我想生成这些排列的 txt 文件列表。我真的需要这里的递归帮助。我使用 C#。
【问题讨论】:
-
这实际上是问号数量的幂。
ABCD?在哪里?只能是 A-Z (26),最大组合为 26^1。
标签: c# wildcard permutation combinations