在python中查找使用电话键盘输入的所有可能字符串的程序

假设我们有一个包含 2-9 数字的字符串。我们必须找到数字可以生成的所有可能的字母组合。下面给出了数字到字母的一种映射(就像在电话按钮上一样)。请注意, 1 确实映射了一些字符,但没有映射字母。

1
2
公元前
3

4
克 嗨
5
公升
6
m 没有
7
p qrs
8
吨紫外线
9
w xyz
*
0
#

例如,如果给定的字符串是“49”,那么可能的字符串将是 ['gw', 'gx', 'gy', 'gz', 'hw', 'hx', 'hy', 'hz ', 'iw', 'ix', 'iy', 'iz']

为了解决这个问题,我们将按照以下步骤操作:

  • 定义一个名为solve的数组来递归解决问题

  • 解决方法采用数字、字符、结果、current_string 和 current_level,函数将类似于

  • 如果 current_level = 数字长度,则在结果后添加当前字符串,并返回

  • 对于 characters[digits[current_level]] 中的所有字符 i

    • 执行解决(数字,字符,结果,current_string + i,current_level + 1)

  • 实际功能将类似于

  • 如果数字长度为 0,则返回空列表

  • 定义一个映射以将数字和相应的字符保存为字符串

  • 结果 := 一个空列表

  • 调用解决(数字,字符,结果,“”,0)

让我们看下面的实现来更好地理解:

示例

class Solution(object):
   def letterCombinations(self, digits):
      if len(digits) == 0:
         return []

      characters = {2:"abc",3:"def",4:"ghi",5:"jkl",6:"mno",7:"pqrs",8:"tuv",9:"wxyz"}
      result = []
      self.solve(digits,characters,result)
      return result
   def solve(self, digits, characters, result, current_string="",current_level = 0):
      if current_level == len(digits):
         result.append(current_string)
      return
   for i in characters[int(digits[current_level])]:
self.solve(digits,characters,result,current_string+i,current_level+1)

ob1 = Solution()
print(ob1.letterCombinations("49"))

输入

"49"
输出结果
['gw', 'gx', 'gy', 'gz', 'hw', 'hx', 'hy', 'hz', 'iw', 'ix', 'iy', 'iz']