Python 中电话号码的字母组合
pythonserver side programmingprogramming更新于 2025/10/25 13:00:17
假设我们有一个包含 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 | # |
例如,如果给定的字符串是“23”,那么可能的字符串将是 [“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”]
为了解决这个问题,我们将遵循以下步骤 −
- 定义一个名为solve的数组以递归方式解决问题
- solve方法采用数字、字符、结果、current_string和current_level,函数将类似于
- 如果current_level =数字长度,则在结果后添加当前字符串并返回
- 对于characters[digits[current_level]]中的所有字符i
- 执行solve(digits, characters, result, current_string + i, current_level + 1)
- 实际函数将类似于
- 如果数字长度为0,则返回一个空列表
- 定义一个映射以将数字和相应的字符保存为字符串
- result :=一个空列表
- 调用solve(digits, characters, result, “”, 0)
示例 (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("37"))
输入
"37"
输出
["dp","dq","dr","ds","ep","eq","er","es","fp","fq","fr","fs"]
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

