LeetCode 17
用dfs的方式遍历所有可能
def letterCombinations(self, digits: str) -> List[str]:
d = collections.defaultdict(list)
d['2'] = ['a', 'b', 'c']
d['3'] = ['d', 'e', 'f']
d['4'] = ['g', 'h', 'i']
d['5'] = ['j', 'k', 'l']
d['6'] = ['m', 'n', 'o']
d['7'] = ['p', 'q', 'r', 's']
d['8'] = ['t', 'u', 'v']
d['9'] = ['w', 'x', 'y', 'z']
d['0'] = [' ']
ds = list()
for digit in digits:
if digit in d:
ds.append(digit)
if len(ds) == 0: return list()
result = list()
Solution.generatorCombinations(d, ds, "", result)
return result
@staticmethod
def generatorCombinations(d:dict(), ds:list, current: str, result: list()):
if len(current) == len(ds):
result.append(current)
return
pos = len(current)
for v in d[ds[pos]]:
Solution.generatorCombinations(d, ds, current + v, result)