一刷~
给定一个仅包含数字
2-9
的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
思路:
首先,需要数字到字母表的映射,使用字典保存,key为数字,value为数字对应的字母列表。
其次,使用递归,递归终止条件为没有号码(返回空列表)或只有一个号码(返回字典中对应的字母列表)。每次递归,做如下拼接:key可能对应的字母+digits[1:]所有可能的结果。
class Solution:dic = {'2':['a', 'b', 'c'],'3':['d', 'e', 'f'],'4':['g', 'h', 'i'],'5':['j', 'k', 'l'],'6':['m', 'n', 'o'],'7':['p', 'q', 'r', 's'],'8':['t', 'u', 'v'],'9':['w', 'x', 'y', 'z']}def letterCombinations(self, digits: str):res = []if len(digits) == 0:return resif len(digits) == 1:return self.dic[digits]alpha = digits[0]tmp = self.letterCombinations(digits[1:])for a in self.dic[alpha]:for t in tmp:res.append(a+t)return res