lc017.电话号码的字母组合

 

题目链接

回溯法,自己写了一下非常慢,然后就看了一下题解,和之前的“全排列”那个题的解法几乎一样。这个算法的时间复杂度是O(N),空间复杂度是O(N)。

python:

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

        def recursion(x, path):
            if x == len(digits):
                res.append("".join(path))
            else:
                for e in d[digits[x]]:
                    path.append(e)
                    recursion(x+1, path)
                    path.pop()
        
        res = []
        recursion(0, [])
        return res