博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
17. Letter Combinations of a Phone Number--back tracking--字符数组
阅读量:6649 次
发布时间:2019-06-25

本文共 1127 字,大约阅读时间需要 3 分钟。

17 给出一个电话拨号盘,数字2-9代表一些字母,已知数字,求出所有字母的可能

例子 比如 求"23" , 2--->"abc" 3-->"def"

画出递归数其实非常简单:

和77. Combinations 本质上是一样的, 都是求所排列问题,但和数字排列不同的时,每一次需要遍历的数组不是固定的,而是根据数的层数来决定的。所以需要设定一个tree_level, 每次递归都需要层数递增,来选择不同的字符串code 如下:

class Solution {    public List
letterCombinations(String digits) { if(digits.length() == 0) return new ArrayList
(); String[] map = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; List
result = new ArrayList<>(); dfs(new StringBuilder(), result, digits,map, 0); return result;} private void dfs(StringBuilder curResult, List
result, String digits, String[] map, int tree_level){ if(curResult.length() == digits.length()){ result.add(curResult.toString()); return; } String str = map[digits.charAt(tree_level)-'0']; for(int j = 0; j

还有当输入字符串为空串时, 返回的是 [] 而不是 [""], 因此在主程序里需要判断这种特殊情况。

if(digits.length() == 0) return new ArrayList
();

 

转载于:https://www.cnblogs.com/keepAC/p/9941308.html

你可能感兴趣的文章
字符串反转,
查看>>
每个都是圆角的,原来如此,
查看>>
2015年倒数第6周学习报告
查看>>
window 搭建svn服务器
查看>>
C#实现WEB服务器
查看>>
双系统给ubuntu增加分区
查看>>
进制转换及字符分割
查看>>
点击浏览器到返回经历了什么(详细解释)
查看>>
【HDOJ】4403 A very hard Aoshu problem
查看>>
Socket基础认识
查看>>
SPOJ3267 D-query(主席树模版)
查看>>
eslint的使用和配置
查看>>
实验报告五
查看>>
浅测微软谷歌在线办公应用
查看>>
Shell重启Tomcat脚本
查看>>
自适应网页布局可借鉴网站
查看>>
设置 viewport 实现定宽网页 WebApp 下布局自适应
查看>>
webpack+vue 我的视角(持续更新)
查看>>
[Android Pro] Android性能优化典范第一季
查看>>
[HAOI2006]受欢迎的牛
查看>>