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

LeetCode17電話號碼的字母組合

題目描述:

給定一個僅包含數字 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