【问题标题】:Algorithm to find number of possible string variations查找可能的字符串变化数量的算法
【发布时间】:2017-06-15 08:06:28
【问题描述】:

对于与密码相关的项目,我正在寻找一种算法,该算法可以根据几个选项计算某个字符串可能具有的变体数量。目前,字符串变体选项是大写/小写和字符到数字的替换(如 E=3

例如,我们以字符串 'abc@def'

只有上/下变体,有 6 个字符可以变化,可能的变体总数为 2^6 = 64

只有字符到数字的替换,有 2 个字符符合 (A=4,E=3)。这使得变化的数量 2^2 = 4

当这两种方法都启用时,我正在努力计算变化的数量。 我试过(2^6 * 2^4),但显然这没有考虑同时应用两者时发生的重叠。

例如,变体 'abc@def''abc@dEf' 都导致 'abc@d3f' 带有数字de 字符 E 上的替换,应计为一个。

不知怎的,我无法弄清楚:)

【问题讨论】:

  • 如果abc@defa可以变成0..9或者A,对吧?所以我们有11 用于单个字母 的选项和11**6 == 1771561 提供的密码的变体。
  • 不行,a 只能变成4A。数字替换就像'l33t'
  • 在这种情况下,ae3 个选项; bcde2 个选项,@ 只有 1 个选项。最后我们有3 * 2 * 2 * 1 * 2 * 3 * 2 = 144 变种
  • @DmitryBychenko 显然我想得太难了;这就是我要找的。 :)

标签: string algorithm variations


【解决方案1】:

只需计算密码中每个字母的所有可能性,然后将它们相乘

  letter options count
     a    a A 4      3
     b      b B      2 
     c      c C      2
     @        @      1 
     d      d D      2
     e    e E 3      3
     f      f F      2

我们终于有了3 * 2 * 2 * 1 * 2 * 3 * 2 == 144 变种

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 2021-11-08
    • 1970-01-01
    • 2011-04-14
    • 2013-10-10
    相关资源
    最近更新 更多