算法-计算器
程序员文章站
2024-02-27 13:11:03
...
问题
给定一个仅包含数字
2-9
的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
基本映射
table = {}
table["1"] = "aaa@qq.com#"
table["2"] = "abc"
table["3"] = "def"
table["4"] = "ghi"
table["5"] = "jkl"
table["6"] = "mno"
table["7"] = "pqrs"
table["8"] = "tuv"
table["9"] = "wxyz"
构造
面对这种题,遍历就好了,不过刚思考了关于递归构造的问题,不试一下怎么行
class Solution:
def letterCombinations(self, digits: str) -> List[str]:
if digits == "":
return []
'''
mark: 构造条件
sub : 每次递归的构造成果
'''
def DFS(mark, sub):
# 当构造元素用完,表明构造完成
if len(mark) == 0:
# 添加到答案集合
result.append(sub)
return
# 每个条件开启递归构造分支
for char in table.get(mark[0]):
DFS(mark[1:], sub + char)
result = []
DFS(digits, "")
return result
没问题,代码简单到不行,省去全部流程的管理,方便快捷,清晰明了。