1. 程式人生 > >Leetcode ——17. 電話號碼的字母組合

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"))