查找在Python中映射到数字位数的字符形成的所有字符串

假设我们有一个如下的字符映射,这里每个数字从1到9,映射到几个字符。

1 -> ['A', 'B', 'C']

2 -> ['D', 'E', 'F']

3 -> ['G', 'H', 'I']

4 -> ['J', 'K', 'L']

5 -> ['M', 'N', 'O']

6 -> ['P', 'Q', 'R']

7 -> ['S', 'T', 'U']

8 -> ['V', 'W', 'X']

9 -> ['Y', 'Z']

如果有数字,则必须在给定的映射列表中用相应的字符更改其数字,并显示所有生成的字符串。对于数字中每出现一个数字,我们应该考虑相同的字符。给定的数字将不包含0。

因此,如果输入类似于[4,3,5],则输出为

JGM KGM LGM JHM KHM LHM JIM KIM LIM JGN KGN LGN JHN KHN LHN JIN KIN LIN JGO KGO LGO JHO KHO LHO JIO KIO LIO

为了解决这个问题,我们将遵循以下步骤-

  • :=一个新列表

  • temp:=一个新列表

  • char_map:=一个新映射

  • 索引:= 0

  • 对于inp中的每个数字,执行

    • 如果索引等于0,则

    • 如果索引> 0是,则

    • 如果index> 0,则

    • 索引:=索引+ 1

    • s:= table [digit-1,i]

    • 在out的末尾插入s

    • 打破

    • s:= table [digit-1,i]

    • s:=字符串[char_map [digit]]

    • 如果char_map [digit]与索引不同,则

    • 字符串:=字符串连接s

    • 在temp的末尾插入字符串

    • 为每个字符串输入

    • 如果char_map [digit]与索引不同,则

    • out:= temp的副本

    • char_map [digit]:=索引

    • 如果数字不在char_map中,则

    • 清除临时列表

    • 对于范围在0到表格[数字-1]范围内的i,执行

    • 返回

    示例

    让我们看下面的实现以更好地理解-

    def findCombinations(inp, table):

       out = list()   temp = list()   char_map = dict()   index = 0

       for digit in inp:

          if digit not in char_map:

             char_map[digit] = index

          temp.clear()

          for i in range(len(table[digit - 1])):

             if index == 0:

                s = table[digit - 1][i]

                out.append(s)

             if index > 0:

                for string in out:

                   s = table[digit - 1][i]

                   if char_map[digit] != index:

                      s = string[char_map[digit]]

                   string = string + s

                   temp.append(string)

                if char_map[digit] != index:

                   break

          if index > 0:

             out = temp.copy()

          index += 1

       return out

    mapping = [['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']]

    inp = [4,3,5]

    res = findCombinations(inp, mapping)

    for it in res:

       print(it, end=" ")

    输入项

    [4,3,5]

    输出结果

    JGM KGM LGM JHM KHM LHM JIM KIM LIM JGN KGN LGN JHN KHN LHN JIN KIN LIN JGO KGO LGO JHO KHO LHO JIO KIO LIO

    以上是 查找在Python中映射到数字位数的字符形成的所有字符串 的全部内容, 来源链接: utcz.com/z/350322.html

    回到顶部