回溯法,自己写了一下非常慢,然后就看了一下题解,和之前的“全排列”那个题的解法几乎一样。这个算法的时间复杂度是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
PREVIOUSmq048.最接近原点的K个点
NEXTmq049.电话号码的字母组合