leetcod17:电话号码的字母组合
程序员文章站
2022-06-05 14:46:08
...
**思路:和产生集合的所有子集方法类似。
例:‘23’
第一轮:
一:[‘a’,‘b’,‘c’]
遍历第一轮生成的集合,生成第二轮
二:[“ad”,“bd”,“cd”]+[“ae”,“be”,“ce”]+[“af”,“bf”,“cf”]
代码
#写法一
class Solution:
def letterCombinations(self, digits: str) -> List[str]:
if not digits:
return []
b = ['','','abc','def','ghi','jkl','mno','pqrs','tuv','wxyz'] #加两个空字符串是为了查找对应字符更方便(学到了)
res = ['']
for i in digits:
tmp = [] ###每次更新tmp这个临时数组
for j in b[int(i)]:
for z in res:
tmp.append((z+j))
res = tmp
#写法二
class Solution:
def letterCombinations(self, digits: str) -> List[str]:
result = []
maps = {'2':'abc','3':'def','4':'ghi','5':'jkl','6':'mno','7':'pqrs','8':'tuv','9':'wxyz'}
for digit in digits:
temp = []
for char in maps[digit]:
if len(result) == 0:
temp += [char]
else:
temp += [s+char for s in result]
result = temp
return result
上一篇: 沙参清肺汤有什么作用
下一篇: 挽回要离婚的老公需要怎么做