https://leetcode.com/problems/letter-combinations-of-a-phone-number/
#回溯法电话号码问题
import itertools
class Solution:
def letterCombinations(self, digits):
if len(digits) == 0:
return None
dic = {'2':'abc', '3':'def', '4':'ghi', '5':'jkl', '6':'mno', '7':'pqrs', '8':'tuv', '9':'wxyz'}
if len(digits) == 1:
return list(dic[digits])
chars = [dic.get(d) for d in digits]
tmp = [[]]
for pool in chars:
tmp = [x+[y] for x in tmp for y in pool]
result = list()
for prod in tmp:
result.append(''.join(prod))
return result
def letterCombinations1(self, digits):
if not digits:
return []
l_map = {'2': 'abc', '3': 'def', '4': 'ghi', '5': 'jkl',
'6': 'mno', '7': 'pqrs', '8': 'tuv', '9': 'wxyz'}
chars = [l_map.get(d) for d in digits]
return [''.join(x) for x in itertools.product(*chars)]
if __name__ == '__main__':
digits = input()
s = Solution()
print(s.letterCombinations(digits))