lintcode 中等题:Letter Combinations of a Phone Number 电话号码的字母组合
题目
给一个数字字符串,每个数字代表一个字母,请返回其所有可能的字母组合。
下图的手机按键图,就表示了每个数字可以代表的字母。

给定 "23"
返回 ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]
以上的答案是按照词典编撰顺序进行输出的,不过,在做本题时,你也可以任意选择你喜欢的输出顺序。
解题
无法理解答案
回溯法,表示无法理解
public class Solution {
    /**
     * @param digits A digital string
     * @return all posible letter combinations
     */
    public ArrayList<String> letterCombinations(String digits) {
        // Write your code here
        HashMap<Integer,String> map = new HashMap<Integer,String>();
        map.put(0,"");
        map.put(1,"");
        map.put(2,"abc");
        map.put(3,"def");
        map.put(4,"ghi");
        map.put(5,"jkl");
        map.put(6,"mno");
        map.put(7,"pqrs");
        map.put(8,"tuv");
        map.put(9,"wxyz");
        ArrayList<String> result = new ArrayList<String>();
        if(digits == null || digits.length() ==0 )
            return result;
        ArrayList<Character> tmp = new ArrayList<Character>();
        numtoString(digits,tmp,result,map);
        return result;
    }
    public void numtoString(String digits,ArrayList<Character> tmp,ArrayList<String> result,HashMap<Integer,String> map){
        if( digits.length() ==0){
            char[] arr = new char[tmp.size()];
            for(int i=0 ;i< tmp.size(); i++){
                arr[i] = tmp.get(i);
            }
            result.add(String.valueOf(arr));
            return;
        }
        Integer curr = Integer.valueOf(digits.substring(0,1));
        String letters = map.get(curr);
        for(int i = 0;i< letters.length() ;i++){
            tmp.add(letters.charAt(i));
            numtoString(digits.substring(1),tmp,result,map);
            tmp.remove(tmp.size() -1);
        }
    }
}
lintcode 中等题:Letter Combinations of a Phone Number 电话号码的字母组合的更多相关文章
- [LintCode] Letter Combinations of a Phone Number 电话号码的字母组合
		Given a digit string, return all possible letter combinations that the number could represent. A map ... 
- [LeetCode] Letter Combinations of a Phone Number 电话号码的字母组合
		Given a digit string, return all possible letter combinations that the number could represent. A map ... 
- [LeetCode]17. Letter Combinations of a Phone Number电话号码的字母组合
		Given a string containing digits from 2-9 inclusive, return all possible letter combinations that th ... 
- [LeetCode] 17. Letter Combinations of a Phone Number 电话号码的字母组合
		Given a string containing digits from 2-9inclusive, return all possible letter combinations that the ... 
- 【LeetCode】17. Letter Combinations of a Phone Number 电话号码的字母组合
		作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:电话号码, 字母组合,回溯法,题解,leetcode, ... 
- 017 Letter Combinations of a Phone Number 电话号码的字母组合
		给定一个数字字符串,返回数字所有可能表示的字母组合. 输入:数字字符串 "23"输出:["ad", "ae", "af" ... 
- Leetcode17.Letter Combinations of a Phone Number电话号码的字母组合
		给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23" 输出:[&quo ... 
- leetcode第18题--Letter Combinations of a Phone Number
		Problem: Given a digit string, return all possible letter combinations that the number could represe ... 
- LeetCode OJ:Letter Combinations of a Phone Number(数字字母组合)
		Given a digit string, return all possible letter combinations that the number could represent. A map ... 
随机推荐
- linux下dup/dup2函数的用法
			系统调用dup和dup2能够复制文件描述符.dup返回新的文件文件描述符(没有用的文件描述符最小的编号).dup2可以让用户指定返回的文件描述符的值,如果需要,则首先接近newfd的值,他通常用来重新 ... 
- CSS简写及如何优化技巧
			CSS简写就是指将多行的CSS属性简写成一行,又称为CSS代码优化或CSS缩写.CSS简写的最大好处就是能够显著减少CSS文件的大小,优化网站整体性能,更加容易阅读. 下面介绍常见的CSS简写规则: ... 
- CentOS6.4安装LAMP环境
			1.配置防火墙,开放80.3306端口 vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport - ... 
- (转)汉字转拼音HanziToPinyin
			本文转载于:http://blog.csdn.net/zhangphil/article/details/47164665 Android系统本身自带有有将汉字转化为英文拼音的类和方法.具体的类就是H ... 
- 内部技术分享的 PPT
			本文的基础是搞了一次内部的技术分享,在此也分享一下本次的PPT的一些内容.先列一下大概内容吧. EF-Code First API(WCF.WebAPI) Xaml MVVM AOP Xamarin. ... 
- DBus通讯
			linux下进程间通信的方式主要有Pipe(管道),FIFO(命名管道),信号,共享内存,消息队列,信号灯等,这些方式各有 各得特点,如管道是linux下命令行中常用的,用于父子进程的通信.但是这些通 ... 
- java 产生随机数的方法
			有三种方法: Math.random():这个方法返回一个[0.0, 1.0)的一个随机double型数.它实际是调用Random类的nextDouble()方法.只不过Math类使用的是一个静态随机 ... 
- C/C++中的可变参函数
			可变参函数最好的实例:printf();参数可变 包含的头文件: C语言中:#include<stdarg.h> C++中的可变参的头文件:#include<cstdarg>, ... 
- LintCode-Kth Prime Number.
			Design an algorithm to find the kth number such that the only prime factors are 3, 5, and 7. The eli ... 
- iOS-音频格式转换-b
			iOS处理音频过程中有时候需要不同格式的音频进行转换,最近需要将m4a格式的音频转换成wav,在网上搜索之后代码整理如下: - (void)convetM4aToWav:(NSURL *)origin ... 
