题目描述
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例:
输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
说明:
尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。
题目理解
- 创建每个数字对应的字母列表的字典
- 定义一个存储结果的数组
- result 是一个数组列表,遍历后字符串操作,加入列表
- 遍历result里的元素
- 循环拼接
代码
#!/usr/bin/env python 3.6
#-*- coding:utf-8 -*-
# @File : 17.实现电话号码的字母组合.py
# @Date : 2018-12-02
# @Author : 黑桃
# @Software: PyCharm
class Solution(object):
def letterCombination(self,digits):
# 创建每个数字对应的字母列表的字典
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"]
}
# 定义一个存储结果的数组
res_str = []
if len(digits) == 0:
return []
# 如果数字字符串的长度为1.返回该数字对应的字典
if len(digits) ==1:
return dic[int(digits[0])]
# 递归调用
result = self.letterCombination(digits[1:])
# result 是一个数组列表,遍历后字符串操作,加入列表
for r in result:## 遍历result里的元素
for j in dic[int(digits[0])]:
res_str.append(j+r)
return res_str
if __name__ == '__main__':
print(Solution().letterCombination("23"))