zoukankan      html  css  js  c++  java
  • leetcode:Letter Combinations of a Phone Number(*的字母组合)

    Question:

    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"].
    Note:

    Although the above answer is in lexicographical order, your answer could be in any order you want.
    给定一个数字字符串,返回所有可能的这个数字所代表的字母的组合,比如如果输入string “23”,那么输出为
    ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"],你的答案可以以任何顺序排列。

    算法思想:① 输入的是数字字符串,可以把这些数字依次字母集合,如把2看做["a","b","c"],把9看做是["w","x","y","z"],对数字字符串遍历一遍,从头进行两两组合,比如输入的字符串是“234”,数字23组合的Arraylist 1是
    ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"],把4看做Arraylist 2 为["g","h","i"],再把Arraylist 1和 Arraylist 2组合。

         ② 该怎么实现,需要设计一个方法getDigitsArray,输入数字,可以返回Arraylist型的这个数字代表的字母组合。
         ③ 还需要设计一个方法getArrayList,可以对两个Arraylist中的元素进行组合,详细请见下面代码。

    代码设计:
     1 class Solution18 {
     2     public ArrayList<String> letterCombinations(String digits) {
     3         ArrayList<String> arraylist1=new ArrayList<String>();
     4         if(digits.length()==0){
     5             arraylist1.add("");
     6             return arraylist1;
     7         }
     8         arraylist1=getDigitsArray(digits.charAt(0));
     9         for(int i=1;i<digits.length();i++){//从前向后依次两两组合
    10             ArrayList<String> arraylist2=getDigitsArray(digits.charAt(i));
    11             arraylist1=getArrayList(arraylist1, arraylist2);
    12         }
    13         return arraylist1;
    14     }
    15     public  ArrayList<String> getArrayList(ArrayList<String>arraylist1    ,ArrayList<String> arraylist2){
    16          ArrayList<String> strlist=new ArrayList<String>();//这个函数的作用是返回两个Arraylist的组合
    17          for(int i=0;i<arraylist1.size();i++){
    18              for(int j=0;j<arraylist2.size();j++){
    19                  strlist.add(arraylist1.get(i)+arraylist2.get(j));
    20              }
    21          }
    22          return strlist;
    23     }
    24     public ArrayList<String> getDigitsArray(char ch){//这个函数的作用是返回数字对应的Arraylist形式的字母组合
    25         ArrayList<String> str=new ArrayList<String>();
    26         switch(ch){
    27         case '0':break;
    28         case '1':break;
    29         case '2':str.add("a");str.add("b");str.add("c");break;
    30         case '3':str.add("d");str.add("e");str.add("f");break;
    31         case '4':str.add("g");str.add("h");str.add("i");break;
    32         case '5':str.add("j");str.add("k");str.add("l");break;
    33         case '6':str.add("m");str.add("n");str.add("o");break;
    34         case '7':str.add("p");str.add("q");str.add("r");str.add("s");break;
    35         case '8':str.add("t");str.add("u");str.add("v");break;
    36         case '9':str.add("w");str.add("x");str.add("y");str.add("z");break;
    37         }
    38         return str;
    39     }
    40 }
    
    

    2013-10-24 01:40:56

    
    
    
    
    
  • 相关阅读:
    CentOS 7 调整home大小
    跨站请求拦截
    SVN操作
    openoffice安装
    MySQL报错ERROR 1436 (HY000): Thread stack overrun:
    jolokia配置Java监控
    elasticksearch分词,导致kibana的url出现问题
    C语言scanf跳出循环的问题
    Jenkins远程代码执行漏洞
    ActiveMQ FileServer漏洞(详细)
  • 原文地址:https://www.cnblogs.com/zhaolizhen/p/phoneNumCom.html
Copyright © 2011-2022 走看看