查找可能的字符串变化数的算法

时间:2017-06-15 08:06:29

标签: string algorithm variations

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

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

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

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

我在计算两种方法启用时的变化数量时会遇到困难。 我已经尝试过(2 ^ 6 * 2 ^ 4),但显然这并不考虑应用这两者时发生的重叠。

例如,变种' abc @ def' ' abc @ dEf' 都会导致& #39; abc @ d3f' 在de character E 上使用数字替换,应该算作一个。

不知怎的,我无法解决这个问题:)

1 个答案:

答案 0 :(得分:2)

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

  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个变体