原題
給一個(gè)不包含01的數(shù)字字符串,每個(gè)數(shù)字代表一個(gè)字母,請返回其所有可能的字母組合。
下圖的手機(jī)按鍵圖,就表示了每個(gè)數(shù)字可以代表的字母。
樣例
給定 "23"
返回["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]
解題思路
- Backtracking,遞歸求解
- 對于每一個(gè)數(shù)字可能對應(yīng)的字母,看做樹的一層
完整代碼
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)