Given a digit string, return all possible letter combinations that the number could represent.
A mapping of digit to letters (just like on the telephone buttons) is given below.
Input:Digit string "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
Note:
A mapping of digit to letters (just like on the telephone buttons) is given below.
Input:Digit string "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
Note:
Although the above answer is in lexicographical order, your answer could be in any order you want.
这道题用的是BFS的方法,枚举每个组合。 复杂度是NP Hard 随着数字的增加,subarray增加。
代码如下:
class Solution:
# @return a list of strings, [s1, s2]
def letterCombinations(self, digits):
dict={'2':['a','b','c'],
'3':['d','e','f'],
'4':['g','h','i'],
'5':['j','k','l'],
'6':['m','n','o'],
'7':['p','q','r','s'],
'8':['t','u','v'],
'9':['w','x','y','z']}
def dfs(num,res,substr):
if num==len(digits):
res.append(substr)
return
for letter in dict[digits[num]]:
dfs(num+1,res,substr+letter)
solution=[]
dfs(0,solution,"")
return solution