首页 > 其他 > 详细

LeetCode 17. 电话号码的字母组合

时间:2021-01-31 17:25:07      阅读:39      评论:0      收藏:0      [点我收藏+]

17. 电话号码的字母组合

Difficulty: 中等

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

技术分享图片

示例 1:

输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]

示例 2:

输入:digits = ""
输出:[]

示例 3:

输入:digits = "2"
输出:["a","b","c"]

提示:

  • 0 <= digits.length <= 4
  • digits[i] 是范围 [‘2‘, ‘9‘] 的一个数字。

Solution

深度优先搜索,需要注意写递归的时候的终止条件。

class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        res = []
        if not digits: return res
        d = {"2":"abc", ‘3‘:"def", ‘4‘:"ghi", ‘5‘:"jkl", ‘6‘:"mno", ‘7‘:"pqrs", ‘8‘:"tuv", ‘9‘:"wxyz"}
        self.dfs(digits, d, ‘‘, res)
        return res
        
        
    def dfs(self, digits, d, path, res):  # path所有可能的路径
        # 递归的终止条件
        if not digits:
            res.append(path)
            return
        # 递归调用
        for c in d[digits[0]]:
            self.dfs(digits[1:], d, path+c, res)

参考:

  1. 17 - Letter Combinations of A Phone Number【FLAG高频精选面试题讲解】 - YouTube
  2. Python easy to understand backtracking solution. - LeetCode Discuss

LeetCode 17. 电话号码的字母组合

原文:https://www.cnblogs.com/swordspoet/p/14352955.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!