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 的长度,则在 result 后添加 current_string,并返回。
- 对于 characters[digits[current_level]] 中的所有字符 i
- 执行 solve(digits, characters, result, current_string + i, current_level + 1)
- 实际函数将如下所示:
- 如果 digits 长度为 0,则返回空列表。
- 定义一个 map 来保存数字和相应的字符作为字符串。
- result := 一个空列表。
- 调用 solve(digits, characters, result, “”, 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']
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP