首页 > 其他 > 详细

Leetcode: Letter Combinations of a Phone Number

时间:2014-06-13 08:33:32      阅读:404      评论:0      收藏:0      [点我收藏+]

像这种DFS的题目,常见的写法无外乎两种,使用recursion, 或者用Stack。本文采用了stack的方式。做完后积累的经验有:像这种在一个ArrayList里面罗列可能的path的题目,recursion的参数一般包括:包含最终结果的集合(ArrayList),input(String),递归层次level(int),某一条具体的path(String)。最后这个参数虽然不是必须,但是如果使用了它,将会使recursion非常好写:所有关于这条路径的添加、删除、修改都可以以这个具体的path为操作对象,并且一旦条件满足,就可以把这个path添加到最终的结果集合里面去,用ArrayList add函数

还有一些细节需要注意:用switch函数的时候,要记得写break,否则所有的case都会执行

bubuko.com,布布扣
 1 public class Solution {
 2     public ArrayList<String> letterCombinations(String digits) {
 3         ArrayList<String> res = new ArrayList<String>();
 4         getlist(digits, res, "", 0);
 5         return res;
 6     }
 7     
 8     public void getlist(String digits, ArrayList<String> res, String single, int level) {
 9         if (digits.length() == single.length()) {
10             res.add(single);
11             return;
12         }
13         int c = (int)(digits.charAt(level) - ‘0‘); //get the specific digit at the level unit
14         String temp = possible(c);
15         char[] letterpool = temp.toCharArray();
16         for (char st : letterpool) {
17             single += st;
18             getlist(digits, res, single, level+1);
19             single = single.substring(0, single.length() - 1);
20         }
21     }
22     
23     public String possible(int c) {
24         String letters = "";
25         switch (c) {
26             case 2: letters = "abc"; break;
27             case 3: letters = "def"; break;
28             case 4: letters = "ghi"; break;
29             case 5: letters = "jkl"; break;
30             case 6: letters = "mno"; break;
31             case 7: letters = "pqrs"; break;
32             case 8: letters = "tuv"; break;
33             case 9: letters = "wxyz"; break;
34             case 0: letters = " "; break;
35         }
36         return letters;
37     }
38 }
bubuko.com,布布扣

 

Leetcode: Letter Combinations of a Phone Number,布布扣,bubuko.com

Leetcode: Letter Combinations of a Phone Number

原文:http://www.cnblogs.com/EdwardLiu/p/3781123.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!