美文网首页
leetcode17. 电话号码的字母组合

leetcode17. 电话号码的字母组合

作者: 冰源 | 来源:发表于2018-09-19 21:27 被阅读51次
    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
    给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
    
    数字到字母的映射
    示例:
    ---
    输入:"23"
    输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
    
    #python
    class Solution:
        def letterCombinations(self, digits):
            """
            :type digits: str
            :rtype: List[str]
            """
            ldict={}
            ldict['2'] = "abc"
            ldict['3'] = "def"
            ldict['4'] = "ghi"
            ldict['5'] = "jkl"
            ldict['6'] = "mno"
            ldict['7'] = "pqrs"
            ldict['8'] = "tuv"
            ldict['9'] = "wxyz"
            if digits=="":return []
            result=['']
            for digit in digits:
                lst = ldict[digit]
                newresult = []
                for x in result:
                    for y in lst:
                        newresult.append(x+y)
                result = newresult
            return result
    
    #python 回溯(想象成一棵树,自底向上遍历)
    class Solution:
        # @param {string} digits
        # @return {string[]}
        def letterCombinations(self, digits):
            mapping = {'2': 'abc', '3': 'def', '4': 'ghi', '5': 'jkl', 
                       '6': 'mno', '7': 'pqrs', '8': 'tuv', '9': 'wxyz'}
            if len(digits) == 0:
                return []
            if len(digits) == 1:
                return list(mapping[digits[0]])
            prev = self.letterCombinations(digits[:-1])
            additional = mapping[digits[-1]]
            return [s + c for s in prev for c in additional]
    

    相关文章

      网友评论

          本文标题:leetcode17. 电话号码的字母组合

          本文链接:https://www.haomeiwen.com/subject/aajwnftx.html