我正在解决这个 Leetcode 问题 - “给定一个包含 2-9 数字的字符串,返回该数字可以代表的所有可能的字母组合。以任何顺序返回答案。
下面给出了数字到字母的映射(就像在电话按钮上一样)。请注意,1 不映射到任何字母。”
这是我能够理解的问题的递归解决方案,但我无法弄清楚解决方案的时间和空间复杂度。
if not len(digits):
return []
res = []
my_dict = {
'2':'abc',
'3':'def',
'4':'ghi',
'5':'jkl',
'6':'mno',
'7':'pqrs',
'8':'tuv',
'9':'wxyz'
}
if len(digits) == 1:
return list(my_dict[digits[0]])
my_list = my_dict[digits[0]] #string - abc
for i in range(len(my_list)): # i = 0,1,2
for item in self.letterCombinations(digits[1:]):
print(item)
res.append(my_list[i] + item)
return res
有关计算此解决方案的时间和空间复杂度的任何帮助或解释都会有所帮助。谢谢你。
