ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

力扣

2021-02-11 18:02:16  阅读:188  来源: 互联网

标签:digits len dic 力扣 str ans def


原题

解法1、2都是大佬的,题解链接

1、回溯

 1 class Solution:
 2     def letterCombinations(self, digits: str) -> List[str]:
 3         if not digits: return []
 4 
 5         phone = {'2':['a','b','c'],
 6                  '3':['d','e','f'],
 7                  '4':['g','h','i'],
 8                  '5':['j','k','l'],
 9                  '6':['m','n','o'],
10                  '7':['p','q','r','s'],
11                  '8':['t','u','v'],
12                  '9':['w','x','y','z']}
13                 
14         def backtrack(conbination,nextdigit):
15             if len(nextdigit) == 0:
16                 res.append(conbination)
17             else:
18                 for letter in phone[nextdigit[0]]:
19                     backtrack(conbination + letter,nextdigit[1:])
20 
21         res = []
22         backtrack('',digits)
23         return res

2、队列

 1 class Solution:
 2     def letterCombinations(self, digits: str) -> List[str]:
 3         if not digits: return []
 4         phone = ['abc','def','ghi','jkl','mno','pqrs','tuv','wxyz']
 5         queue = ['']  # 初始化队列
 6         for digit in digits:
 7             for _ in range(len(queue)):
 8                 tmp = queue.pop(0)
 9                 for letter in phone[ord(digit)-50]:# 这里我们不使用 int() 转换字符串,使用ASCII码
10                     queue.append(tmp + letter)
11         return queue

3、与大佬的相比我的代码比较烂了

 1 class Solution:
 2     def letterCombinations(self, digits: str) -> List[str]:
 3         ans,dic,lens,cnt = [],{},len(digits),0
 4         dic['2'],dic['3'],dic['4'],dic['5'] = 'abc','def','ghi','jkl'
 5         dic['6'],dic['7'],dic['8'],dic['9'] = 'mno','pqrs','tuv','wxyz'
 6         for i in range(lens):
 7             if i == 0:
 8                 ans += ['']
 9             for j in range(len(ans)):
10                 for c in dic[digits[i]]:
11                     ans.append(ans[j] + c)
12         i = len(ans) - 1
13         while i >= 0 and len(ans[i]) == lens:
14             i -= 1
15         return ans[i + 1:]
16 
17         

 

标签:digits,len,dic,力扣,str,ans,def
来源: https://www.cnblogs.com/lj95/p/14397969.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有