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

Algorithm to find number of possible string variations

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

例如,让字符串 'abc@def'

仅 upper/lower 个变体,就有 6 个字符可以变体,可能的变体总数为 2^6 = 64.

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

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

例如,变体 'abc@def''abc@dEf' 都会导致 'abc@d3f' 在字符 E 上用数字替换,应该算作一个。

我怎么搞不懂:)

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

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