Leetcode ——17. 电话号码的字母组合

题目描述

给定一个仅包含数字 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"))



猜你喜欢

转载自blog.csdn.net/Heitao5200/article/details/84729000