LeetCode 17 [Letter Combinations of a Phone Number]

原題

給一個(gè)不包含01的數(shù)字字符串,每個(gè)數(shù)字代表一個(gè)字母,請(qǐng)返回其所有可能的字母組合。

下圖的手機(jī)按鍵圖,就表示了每個(gè)數(shù)字可以代表的字母。

樣例
給定 "23"

返回["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]

解題思路

  • Backtracking,遞歸求解
  • 對(duì)于每一個(gè)數(shù)字可能對(duì)應(yīng)的字母,看做樹(shù)的一層

完整代碼

class Solution(object):
    def letterCombinations(self, digits):
        """
        :type digits: str
        :rtype: List[str]
        """
        res = []
        if not digits:
            return res
        self.helper(digits, "", res)
        return res
        
    def helper(self, digits, string, res):
        keyPad = {'0':' ', '1':'*', '2':'abc', '3':'def', '4':'ghi', '5':'jkl', '6':'mno', '7':'pqrs', '8':'tuv', '9':'wxyz'}
        if len(digits) == 0:
            res.append(string)
        else:
            for char in keyPad[digits[0]]:
                self.helper(digits[1:], string + char, res)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容