原题目:力扣
给定一个仅包含数字 2-9
的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
解法1:暴力法,给几个数字就写几层循环,题目给定的数字最多为四个,写四个循环,按照给定的数字决定跳过几层循环
解法2:dfs(深度优先遍历),通常来说,只要是多层的循环都可以考虑dfs的做法,代码如下:
class Solution:
def letterCombinations(self, digits: str):
m={
'2':'abc',
'3':'def',
'4':'ghi',
'5':'jkl',
'6':'mno',
'7':'pqrs',
'8':'tuv',
'9':'wxyz'
}
res=[]
if not digits:
return []
def dfs(cur_s,digits,i):
if i>=len(digits):
res.append(cur_s)
return
for c in m[digits[i]]:
dfs(cur_s+c,digits,i+1)
dfs('',digits,0)
return res