题目很简单,要求是对所有数字键下的字符进行组合,然后给出所有的组合情况。
直接去挨个遍历难免费时,一个好的办法就是递归
假设我们知道数字为'234',那么其实所有组合就是数字2下的所有字符和’34‘字符串能够排列的所有组合交叉组合。
代码如下:
class Solution:
def fuc(self, digits: str, dic) -> List[str]:
if len(digits) == 0:
return []
if len(digits) == 1:
return dic[digits]
first = digits[0]
temp = []
for c in dic[first]:
other_all = self.fuc(digits[1:], dic)
for i in range(len(other_all)):
new_comb = list(other_all[i])
new_comb.insert(0,c)
temp.append(''.join(new_comb))
return temp
def letterCombinations(self, digits: str) -> List[str]:
dic = {'2':['a','b','c'],'3':['d','e','f'],'4':['g','h','i'],'5':['j','k','l'],
'6':['m','n','o'],'7':['p','q','r','s'],'8':['t','u','v'],'9':['w','x','y','z']}
comb = self.fuc(digits, dic)
return comb