Leetcode 17. Letter Combinations of a Phone number

 

求给出的数字串,如果按照电话键盘的编译方式,可以给出多少那些对应的数字组合。例如:

Input:Digit string "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

 1 class Solution(object):
 2     def letterCombinations(self, digits):
 3         """
 4         :type digits: str
 5         :rtype: List[str]
 6         """
 7         if not digits:
 8             return []
 9         
10         n = len(digits)
11         
12         res = []
13         line = []
14         
15         self.dfs(digits, res, line)
16         
17         return res
18                 
19                 
20     
21     def dfs(self, digits, res, line):
22         if len(digits) == 0:
23             res.append(''.join(line))
24             return 
25         
26         if digits[0] == '2':    
27             self.dfs(digits[1:], res, line+['a'])
28             self.dfs(digits[1:], res, line+['b'])
29             self.dfs(digits[1:], res, line+['c'])
30         if digits[0] == '3':    
31             self.dfs(digits[1:], res, line+['d'])
32             self.dfs(digits[1:], res, line+['e'])
33             self.dfs(digits[1:], res, line+['f'])
34         if digits[0] == '4':    
35             self.dfs(digits[1:], res, line+['g'])
36             self.dfs(digits[1:], res, line+['h'])
37             self.dfs(digits[1:], res, line+['i'])
38         if digits[0] == '5':    
39             self.dfs(digits[1:], res, line+['j'])
40             self.dfs(digits[1:], res, line+['k'])
41             self.dfs(digits[1:], res, line+['l'])
42         if digits[0] == '6':    
43             self.dfs(digits[1:], res, line+['m'])
44             self.dfs(digits[1:], res, line+['n'])
45             self.dfs(digits[1:], res, line+['o'])
46         if digits[0] == '7':    
47             self.dfs(digits[1:], res, line+['p'])
48             self.dfs(digits[1:], res, line+['q'])
49             self.dfs(digits[1:], res, line+['r'])
50             self.dfs(digits[1:], res, line+['s'])
51         if digits[0] == '8':    
52             self.dfs(digits[1:], res, line+['t'])
53             self.dfs(digits[1:], res, line+['u'])
54             self.dfs(digits[1:], res, line+['v'])
55         if digits[0] == '9':    
56             self.dfs(digits[1:], res, line+['w'])
57             self.dfs(digits[1:], res, line+['x'])
58             self.dfs(digits[1:], res, line+['y'])
59             self.dfs(digits[1:], res, line+['z'])

典型的DFS问题。

posted @ 2017-05-14 09:35  lettuan  阅读(168)  评论(0编辑  收藏  举报