Leetcode 17.电话号码的字母组合 (模拟)

发布时间 2023-03-25 21:34:02作者: 珍珠鸟

题目链接在这里:电话号码的字母组合

这道题主要学习的是哈希表的应用:可以用大括号来代表建立哈希表,以及子函数的实现:可以直接在主函数中定义子函数,将\(string\)拼成一个整个的长\(string:\)"".join(list), 注意前面的这个空串是必要的,它代表子串之间直接相连,没有其他的字符。

from ast import List

class Solution:
    def letterCombinations(self, digits: str) -> List:
        if digits == "":
            return []
        
        phoneMap = {
            "2": "abc",
            "3": "def",
            "4": "ghi",
            "5": "jkl",
            "6": "mno",
            "7": "pqrs",
            "8": "tuv",
            "9": "wxyz",
        }

        combination = []
        combinations = []

        def dfs(index:int):
            if index == len(digits):
                combinations.append("".join(combination))
            else:
                digit = digits[index]
                for i in phoneMap[digit]:
                    combination.append(i)
                    dfs(index=index+1)
                    combination.pop()
        
        dfs(0)
        return combinations

if __name__=="__main__":
    digits = ""
    ans = Solution().letterCombinations(digits=digits)
    print(ans)