【Leetcode】【python】Letter Combinations of a Phone Number

来源:互联网 发布:电脑去水印软件 编辑:程序博客网 时间:2024/06/05 07:40

题目大意

输入手机键盘的数字,组合所有可能的字母。

解题思路

DFS深度优先

代码

class Solution(object):    def letterCombinations(self, digits):        """        :type digits: str        :rtype: List[str]        """        def dfs(num, string, res):            print string, res            if num == length:                res.append(string)                return            for letter in dict[digits[num]]:                print letter                dfs(num+1, string+letter, res)        dict = {'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']                }        res = []        length = len(digits)        if length == 0:            return []        dfs(0, '', res)        return res

总结

该题目的标签是:回溯法回溯法采用试错的思想,它尝试分步的去解决一个问题。在分步解决问题的过程中,当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候,它将取消上一步甚至是上几步的计算,再通过其它的可能的分步解答再次尝试寻找问题的答案。回溯法通常用最简单的递归方法来实现,在反复重复上述的步骤后可能出现两种情况:

  • 找到一个可能存在的正确的答案
  • 在尝试了所有可能的分步方法后宣告该问题没有答案

在最坏的情况下,回溯法会导致一次复杂度为指数时间的计算。

阅读全文
0 0
原创粉丝点击