深度优先遍历
class Solution:
def letterCombinations(self, digits: str):
NumDict = {'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'],
}
def backtracking():
if len(path) == len(digits):
res.append(''.join(path))
return
c = digits[len(path)]
for i in NumDict[c]:
path.append(i)
backtracking()
path.pop()
path = list()
res = list()
if not digits:
return res
backtracking()
return res
总结
1、题目描述,根据数字字符串,输出对应字符的组合,n个数字对应组合的字符个数为n,最后将全部组合置于列表中。
2、面对寻找所有的可行解的题目,可以选择回溯算法(深度优先遍历、广度优先遍历),代码通过函数递归实现回溯算法。
3、代码中,在执行完成backtracking()的内容后,使用path.pop()删除path列表的最后一个元素,目的是完成剩余的深度优先遍历过程。
这篇博客详细介绍了如何使用深度优先遍历(DFS)算法来解决LeetCode第17题——电话号码的字母组合。作者通过定义一个`backtracking`函数实现了递归回溯,遍历所有可能的字母组合,并将其存储在结果列表中。在每次递归调用结束后,通过`path.pop()`移除路径中的最后一个元素,以继续进行后续的遍历。该方法适用于寻找所有可能解的问题,特别是字符串或数字到字符映射的情况。
1805

被折叠的 条评论
为什么被折叠?



