DFS+回溯专题 - leetcode17. Letter Combinations of a Phone Number

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a786150017/article/details/82953485

17. Letter Combinations of a Phone Number

题目描述

输入一只包含2-9数字的字符串, 返回所有可能的字母组合。数字-字母映射如图所示(像电话按键,注意数字1不匹配任何字母)

例子

Input: “23”
Output: [“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].

解法
法1是常规DFS, 法2是简洁DFS,法3是BFS
边界:注意输入为空时,输出为[]

解法1
常规的DFS思想。首先建立一个数字-字母的映射mapping,截止条件是索引到的位置到达len(digits)

class Solution(object):
    def letterCombinations(self, digits):
        """
        :type digits: str
        :rtype: List[str]
        """
        if not digits:
            return []
        
        self.mapping = {'2':'abc', '3':'def', '4':'ghi','5':'jkl', '6':'mno','7':'pqrs','8':'tuv','9':'wxyz'}
        res = []
        self.helper(digits, 0, '', res)
        return res
        
    def helper(self, digits, i, temp, res):
        if i == len(digits):
            res.append(temp)
            return

        for c in self.mapping[digits[i]]:
            temp += c
            self.helper(digits, i+1, temp, res)
            temp = temp[:-1]

解法2
简洁DFS写法

class Solution(object):
    def letterCombinations(self, digits):
        if not digits:
            return []
        
        self.mapping = {'2':'abc', '3':'def', '4':'ghi','5':'jkl', '6':'mno','7':'pqrs','8':'tuv','9':'wxyz'}
        return self.helper(digits)
        
    def helper(self, digits):
        if not digits:
            return ['']
        return [x + y for x in self.mapping[digits[0]] for y in self.helper(digits[1:])]

解法3
BFS,想象成在一颗多叉树上的层次遍历

class Solution(object):
    def letterCombinations(self, digits):
        if not digits:
            return []
        
        mapping = {'2':'abc', '3':'def', '4':'ghi','5':'jkl', '6':'mno','7':'pqrs','8':'tuv','9':'wxyz'}
        queue = ['']
        for num in digits:
            for _ in range(len(queue)):
                node = queue.pop(0)
                for c in mapping[num]:
                    queue.append(node + c)
        return queue

猜你喜欢

转载自blog.csdn.net/a786150017/article/details/82953485