DFS和遍历两种方法
第一种:
class Solution(object):
def letterCombinations(self, digits):
"""
:type digits: str
:rtype: List[str]
"""
out = []
letter_map = [[' '],
['_'],
['a','b','c'],
['d','e','f'],
['g','h','i'],
['j','k','l'],
['m','n','o'],
['p','q','r','s'],
['t','u','v'],
['w','x','y','z']
]
def dfs(erp,la,digits):
if erp==len(digits):
out.append(la)
return out
else:
a = letter_map[int(digits[erp])]
for b in a:
dfs(erp+1,la+b,digits)
if len(digits)>1:
la = ''
dfs(0,la,digits)
return out
elif len(digits)==1:
return letter_map[int(digits)]
else:
return []
第二种:
class Solution(object):
def letterCombinations(self, digits):
"""
:type digits: str
:rtype: List[str]
"""
out = []
letter_map = [[' '],
['_'],
['a','b','c'],
['d','e','f'],
['g','h','i'],
['j','k','l'],
['m','n','o'],
['p','q','r','s'],
['t','u','v'],
['w','x','y','z']
]
if len(digits)>1:
la = letter_map[int(digits[0])]
elif len(digits)==1:
return letter_map[int(digits)]
else:
return []
'''
for b in digits[1:]:
lb = letter_map[int(b)]
out=[]
for s in la:
for e in lb:
out.append(s+e)
la = out
return list(set(la))
'''