一是第一次熟悉python的类的写法
二是这个有好多循环,有点绕
class Solution:
def letterCombinations_sub(self, num:list, dig:list, p:list,cur:str, n:int)-> List[str]:
if(n < len(num) - 1):
for i in range(len(dig[num[n]])):
p = self.letterCombinations_sub(num, dig, p, cur + dig[num[n]][i], n+1)
else:'''长度达到len(num) - 1, 等于构造好了'''
for i in range(len(dig[num[n]])):
p.append(cur+dig[num[n]][i])
return p
def letterCombinations(self, digits: str) -> List[str]:
dig = [[] for _ in range(8)]
num = []
p = []
n = 0
if(len(digits) == 0):
return []
for i in range(5):
st = ord("a") + i * 3
dig[i].append(chr(st))
dig[i].append(chr(st+1))
dig[i].append(chr(st+2))
dig[5].extend(['p','q','r','s'])
dig[6].extend(['t','u','v'])
dig[7].extend(['w','x','y','z'])
for i in range(len(digits)):
num.append(int(digits[i]) - 2)
cur = ""
return self.letterCombinations_sub(num, dig,p,cur,n)