Leetcode ——17. 電話號碼的字母組合
阿新 • • 發佈:2018-12-06
題目描述
給定一個僅包含數字 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"))