原题
给一个不包含01的数字字符串,每个数字代表一个字母,请返回其所有可能的字母组合。
下图的手机按键图,就表示了每个数字可以代表的字母。
样例
给定 "23"
返回["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]
解题思路
- Backtracking,递归求解
- 对于每一个数字可能对应的字母,看做树的一层
完整代码
class Solution(object):
def letterCombinations(self, digits):
"""
:type digits: str
:rtype: List[str]
"""
res = []
if not digits:
return res
self.helper(digits, "", res)
return res
def helper(self, digits, string, res):
keyPad = {'0':' ', '1':'*', '2':'abc', '3':'def', '4':'ghi', '5':'jkl', '6':'mno', '7':'pqrs', '8':'tuv', '9':'wxyz'}
if len(digits) == 0:
res.append(string)
else:
for char in keyPad[digits[0]]:
self.helper(digits[1:], string + char, res)