LeetCode17電話號碼的字母組合
阿新 • • 發佈:2018-11-11
題目描述:
給定一個僅包含數字 2-9
的字串,返回所有它能表示的字母組合。
給出數字到字母的對映如下(與電話按鍵相同)。注意 1 不對應任何字母。
示例:
輸入:"23"
輸出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
說明:
儘管上面的答案是按字典序排列的,但是你可以任意選擇答案輸出的順序。
解答思路:
讀完題目之後,基本就能感覺出來這題需要使用回溯方法來做。
回溯方法的關鍵就是找到回溯迴圈和臨界條件。
以數字23為例,來理解這個問題:
需要回溯的迴圈就是 每一層都迴圈遍歷所表示的字元,然後外層需要遍歷完所有的數字
臨界條件就是層數指標高於最大層數。
程式碼實現:
使用Python3實現的code,GitHub地址為:https://github.com/zhangdianlei/LeetCode_python/blob/master/src/c17.py
def back(digits, str, index, result):
chars = ["", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"]
if len(digits) == index:
result.append(str)
return
for item in chars[int(digits[index])]:
back(digits, str+item, index + 1, result)
class Solution:
def letterCombinations(self, digits):
"""
:type digits: str
:rtype: List[str]
"""
str = ""
result = []
index = 0
if len (digits) == 0:
return result
back(digits, str, index, result)
return result