题目:
思路:
使用回溯法对这道题进行求解,如输入23,则需要在定住2中一个字母如a的情况下,对3的字母遍历,形成组合,当3的字母遍历完成后,再选择2的第二个字母,再对3的字母进行遍历。当有多个数字输入时的处理相同,即对每个数字所代表的字母逐层遍历,每次遍历每层取一个字母,选取的字母总长度等于输入的数字位数时,将这次遍历结果加入最终结果集。
代码:
class Solution:
def letterCombinations(self, digits: str) -> List[str]:
dic = {'2': 'abc', '3': 'def', '4': 'ghi', '5': 'jkl', '6': 'mno', '7': 'pqrs', '8': 'tuv', '9': 'wxyz'}
if len(digits) == 0:
return []
fin_res = []
tep_s = ''
fin_res = self.dfs(0, dic, digits, fin_res, tep_s)
return fin_res
def dfs(self, echos, dic, digits, fin_res, tep_s):
if echos == len(digits):
fin_res.append(tep_s)
return fin_res
for i in dic[digits[echos]]:
tep_s += i
fin_res = self.dfs(echos+1, dic, digits, fin_res, tep_s)
tep = list(tep_s)
tep.pop()
tep_s = ''.join(tep)
return fin_res