425. 电话号码的字母组合

425. 电话号码的字母组合

中文English

给一个不包含01的数字字符串,每个数字代表一个字母,请返回其所有可能的字母组合。

下图的手机按键图,就表示了每个数字可以代表的字母。

12
ABC
3
DEF
4
GHI
5
JKL
6
MNO
7
PQRS
8
TUV
9
WXYZ

样例

样例 1:

输入: "23"
输出: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]
解释: 
'2' 可以是 'a', 'b' 或 'c'
'3' 可以是 'd', 'e' 或 'f'

样例 2:

输入: "5"
输出: ["j", "k", "l"]

注意事项

以上的答案是按照词典编撰顺序进行输出的,不过,在做本题时,你也可以任意选择你喜欢的输出顺序。

 
 
输入测试数据 (每行一个参数)如何理解测试数据?

 

class Solution:
    """
    @param digits: A digital string
    @return: all posible letter combinations
    """
    def letterCombinations(self, digits):
        # write your code here
        #bfs一圈圈的匹配
        if not digits: return []
        
        #初始化
        queue = []
        dict = {'2':'abc','3':'def','4':'ghi','5':'jkl','6':'mno','7':'pqrs','8':'tuv','9':'wxyz'}
        
        #先把第一个值放进去
        first_num = digits[0]
        for i in dict[first_num]:
            queue.append(i)
        
        
        #后面的值加进去
        for i in digits[1: ]:
            res = []
            while queue:
                cur_s = queue.pop(0)
                
                for j in dict[i]:
                    new_s = cur_s + j 
                    res.append(new_s)
            queue = res 

        return queue
                
            

 DFS写法

class Solution:
    """
    @param digits: A digital string
    @return: all posible letter combinations
    """
    def letterCombinations(self, digits):
        # write your code here
        #dfs写法
        if not digits: return []
        
        #初始化
        results = []
        dict = {'2':'abc','3':'def','4':'ghi','5':'jkl','6':'mno','7':'pqrs','8':'tuv','9':'wxyz'}
        
        
        def dfs(index, char, results):
            if (index == len(digits)):
                results.append(''.join(char))
                return
            
            for j in dict[digits[index]]:
                char.append(j)
                dfs(index + 1, char, results)
                char.pop()
            
        dfs(0, [], results)
        
        return results

 

posted @ 2020-07-05 15:53  风不再来  阅读(441)  评论(0编辑  收藏  举报