leetcode -- Letter Combinations of a Phone Number -- 重点
2015-12-14 15:31
483 查看
https://leetcode.com/problems/letter-combinations-of-a-phone-number/
先手工枚举,构造解空间树.标准dfs求解。
先手工枚举,构造解空间树.标准dfs求解。
class Solution(object): def dfs(self, digits, target_lvl, mydict, subres, res): lvl = len(subres) if lvl == target_lvl: if subres: res.append(subres[:]) return else: for x in mydict[digits[lvl]]:#子节点为下一个数字对应的每个字母 self.dfs(digits, target_lvl, mydict, subres + x, res) def letterCombinations(self, digits): """ :type digits: str :rtype: List[str] """ mydict = {'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'] } res = [] self.dfs(digits, len(digits), mydict, "",res) return res
自己重写code
这里的子集树,每一层对应一个数字的三个字母,其子节点为下一个数字的三个字母。class Solution(object): def dfs(self, candidates, level, mydict, subres, res): if level == len(candidates): res.append(subres) return#不要忘记return for j in mydict[candidates[level]]:#每一个level对应一个数字 self.dfs(candidates, level + 1, mydict, subres + j, res) def letterCombinations(self, digits): """ :type digits: str :rtype: List[str] """ mydict = {'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'] } if not digits: return [] res = [] self.dfs(digits, 0, mydict, '', res) return res
相关文章推荐
- iOS开发之Core Data数据存储
- JBoss Access log的配置
- 浅谈Entity Framework 增删改查和事务操作
- canvas详解----绘制线条
- Struts2基础复习系列(5)
- <学习笔记> jQuery Mobile 入门
- linux下磁盘分区,格式化和挂载
- OC-041.NSArray的数组排序
- JAVA学习笔记3--数组
- 配置双动态监听,多端口监听和静态监听
- IDEA下Log4j使用教程
- Maple Syrup
- hdoj1005
- json解析的方法
- 聚类相关词汇扫盲
- 无限级菜单
- InputStream复用,mark和reset
- nRF52系列——Get started
- SSH 连接树莓派、远程上传文件
- pc端跳 转 移动端