码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode Letter Combinations of a Phone Number

时间:2015-01-05 00:30:36      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:

Given a digit string, return all possible letter combinations that the number could represent.

A mapping of digit to letters (just like on the telephone buttons) is given below.

技术分享

Input:Digit string "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

对于这道题,首先需要将每个数字对应的字符信息存起来,之后用双重循环去遍历,在首次添加的时候需要单独拎出来
 1 package Letter.Combinations.of.a.PhoneNumber;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 
 6 public class LetterCombinationsOfaPhoneNumber {
 7 public static void main(String args[]){
 8     String s="22";
 9     List<String> list=letterCombinations(s);
10     for(String ss:list){
11         System.out.println(ss);
12     }
13 }
14 public static List<String> letterCombinations(String digits) {
15     List<String> dic[]=new     ArrayList[10];
16     List<String> result=new ArrayList<String>();
17     if(digits.isEmpty()){
18         result.add("");
19         return result;
20     }
21     //初始化
22     for(int i=0;i<10;i++){
23         dic[i]=new ArrayList<String>();
24     }
25     
26     //填充字典
27     dic[2].add("a");
28     dic[2].add("b");
29     dic[2].add("c");
30     
31     dic[3].add("d");
32     dic[3].add("e");
33     dic[3].add("f");
34     
35     dic[4].add("g");
36     dic[4].add("h");
37     dic[4].add("i");
38     
39     dic[5].add("j");
40     dic[5].add("k");
41     dic[5].add("l");
42     
43     dic[6].add("m");
44     dic[6].add("n");
45     dic[6].add("o");
46     
47     dic[7].add("p");
48     dic[7].add("q");
49     dic[7].add("r");
50     dic[7].add("s");
51     
52     dic[8].add("t");
53     dic[8].add("u");
54     dic[8].add("v");
55     
56     dic[9].add("w");
57     dic[9].add("x");
58     dic[9].add("y");
59     dic[9].add("z");
60     
61     //将输入的String转换成Int[]
62     int len=digits.length();
63     char[] aa=digits.toCharArray();
64     int intdig []=new int[len];
65     for(int i=0;i<len;i++){
66         intdig[i]=Integer.parseInt(String.valueOf(aa[i]));
67     }
68     //转换
69    
70     for(int i=0;i<intdig.length;i++){
71         int cur=intdig[i];
72         if(cur==1||cur==0)
73             continue;
74          if(result.size()==0){
75                 for(String s:dic[cur])
76                 {
77                     result.add(s);
78                 }
79             }else{
80                 List<String> temp=new ArrayList<String>();
81                 for(String s:dic[cur]){
82                 for(String ss:result){
83                     temp.add(ss+s);
84                 }
85                 }
86                 result.clear();
87                 for(String tempS:temp){
88                     result.add(tempS);
89                 }
90             }
91         
92     }
93     return result;
94 }
95 }

 



Leetcode Letter Combinations of a Phone Number

标签:

原文地址:http://www.cnblogs.com/criseRabbit/p/4202477.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!