Letter Combinations of a Phone Number
2016-06-19 21:37
260 查看
//回溯,深度遍历每个每个按键,然后回溯,题库里的回溯题,都差不多是类似的解法:
public class Solution {
//dfs public List<String> letterCombinations(String digits) { List<String>res = new ArrayList<String>(); if(digits.length()==0)return res; String[] str=new String[]{"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; dfs(res,"",0,digits,str); return res; } public void dfs(List<String>l,String sb,int index,String m,String[] str) {
//1 if(index==m.length()&&sb.length()==m.length())//why? { l.add(sb); return; } for(int i=index;i<m.length();i++) { int a=m.charAt(index)-'0'; for(int j=0;j<str[a].length();j++) { sb+=str[a].charAt(j); dfs(l,sb,i+1,m,str); sb=sb.substring(0,sb.length()-1); } } }
//2
if(index==m.length()) { l.add(sb); return; } int a=m.charAt(index)-'0'; for(int j=0;j<str[a].length();j++) { sb+=str[a].charAt(j); dfs(l,sb,index+1,m,str); sb=sb.substring(0,sb.length()-1); }
//3
if(index==m.length()) { l.add(sb.toString()); return; } int a=m.charAt(index)-'0'; for(int j=0;j<str[a].length();j++) { sb=sb.append(str[a].charAt(j)); dfs(l,sb,index+1,m,str); sb.setLength(sb.length() - 1); }
//4 BFS
public List<String> letterCombinations(String digits) { LinkedList<String>res = new LinkedList<String>(); if(digits.length()==0)return res; String[] str=new String[]{"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; res.add(""); if(digits.length()==0)return res; for(int i=0;i<digits.length();i++) { int a=Character.getNumericValue(digits.charAt(i)); while(res.peek().length()==i) { String s=res.remove(); for(char c:str[a].toCharArray()) { res.add(s+c); } } } return res; }
}
相关文章推荐
- CDM2.04.06 WHQL Certified
- 13-1盒模型代码简写关于颜色的css样式也是可以缩写的,当你设置的颜色是16进制的色彩值时,如果每两位的值相同,可以缩写一半。 例子1: p{color:#000000;} 可以缩写为: p{
- Shell 脚本知识回顾 (六) —— Shell 函数
- [翻译]AKKA笔记 - CHILD ACTORS与ACTORPATH -6
- 【设计模式】中介者模式
- 解决数组输出汉字问题的分类
- 思捷 XEN的网络逻辑 与其 locking-mode理解
- js快速去除数组重复项
- Shell 脚本中如何使用make命令
- 20145325张梓靖 《Java程序设计》第16周课程总结
- 代理模式(Proxy Pattern)
- ExpandableListView的基本用法
- 一组数字的循环输出
- 用友电话面试后的几个问题总结
- String,StringBuilder,StringBuffer
- Hdu 2899 Strange fuction(二分三分可做,模拟退火解法)
- BZOJ_1833_[ZJOI2010]_数字计数_(数位dp)
- HTTP 数据包头解析
- java线程执行器
- JSP页面的基本元素