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

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

假设我们有一个包含 2 到 9 的数字的字符串。我们必须找到该数字可以生成的所有可能的字母组合。数字到字母的某个映射(就像电话按钮上一样)如下所示。请注意,1 确实对某些字符进行映射,但没有字母。

1 2 a b c 3 d e f
4 g h i 5 j k l 6 m n o
7 p q r s 8 t u v 9 w x y z
* 0 #

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

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

  • 定义一个名为 solve 的数组,以递归解决问题
  • solve 方法接受 digits、characters、result、current_string 和 current_level,函数将如下所示
  • 如果 current_level = digits 的长度,则在结果后添加当前字符串,并返回
  • 对于所有的字符 i 在 characters[digits[current_level]] 中
    • 执行 solve(digits, characters, result, current_string + i, current_level + 1)
  • 实际函数将如下所示
  • 如果 digits 的长度为零,则返回一个空列表
  • 定义一个 map 来保存数字和对应的字符作为一个字符串
  • result := 一个空列表
  • 调用 solve(digits, characters, result, “”, 0)

请看以下实现以更好地理解:

更多Python相关文章,请阅读:Python 教程

示例

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']

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程