题目
思路
递归思路,从头开始遍历字符串,结果是,当前字符串能表示的字母 加上 后续所有字符能表示的字母串。
时间复杂度为3^n(因为每个字符对应3个字母的可能,n个字符),近似O(2^n)
代码
class Solution:
def letterCombinations(self, digits: str) -> List[str]:
res = []
if digits == '': # 注意判断输入字符串为空的情况
return res
res = self.find(0, digits, '', res)
return res
# s保存从digits[0-index-1]能得到的一个字符串,即上图树形结构的一条路径
def find(self, index, digits, s, res):
if index == len(digits):
res.append(s)
return res
dic = {'2':'abc','3':'def','4':'ghi','5':'jkl','6':'mno','7':'pqrs','8':'tuv','9':'wxyz'}
c = digits[index]
letters = dic[c]
for i in letters:
res = self.find(index+1,digits,s+i,res)
return res