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.看到这个题目,我们第一部想到的就是要按照数字存储相对应的字母。这样的话,显然array是一个比较好的选择。根据测试, 数字1和0都是对应空 “”。
2.因为是不同的组合,所以我们要从不同数字的对应字母里分别找出一个字母进行组合,这个就和leetcode里combination的题目很相似,应该用recursion来解
解题思路如下:
比如说我们输入23:
那么按照我们的习惯, 我们从2中的abc选一个a 再到3中的def选一个d 好,完成ab,放入list里面, 返回
再到3中的def选一个e 好,完成ae,放入list里面 ,返回
                      再到3............f ...... af............ 返回,好了def里面我们已经结束了,返回到上一层的abc
我们从2中的abc选一个b
...............d .......bd............. 返回
                      ..............以此类推..................
           一直到我们遍历完abc
每当我们完成一个和数字组合相同的字符串 我们都存入list 并且return 并且返回到上层继续加入下一个属于同数字的字母
从上述我们可以看出recursion的逻辑
     public List<String> letterCombinations(String digits) {
String[] letters = new String[]{"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
List<String> result = new ArrayList<>();
if (digits.length() == 0) {
return result;
}
formCombination(result, "", letters, 0, digits);
return result;
}
void formCombination(List<String> result, String current, String[]letters, int index, String digits) {
if (index >= digits.length() && current.length() == digits.length()) {
result.add(current);
return;
}
int digit = Integer.parseInt(digits.substring(index, index + 1));
char[] arr = letters[digit].toCharArray();
for (int j = 0; j < arr.length; j++) {
formCombination(result, current + arr[j], letters, index + 1, digits);
}
}


Leetcode - Letter Combination Of A Phone Number的更多相关文章

  1. LeetCode: Letter Combinations of a Phone Number 解题报告

    Letter Combinations of a Phone Number Given a digit string, return all possible letter combinations ...

  2. [LeetCode]Letter Combinations of a Phone Number题解

    Letter Combinations of a Phone Number: Given a digit string, return all possible letter combinations ...

  3. [LeetCode] Letter Combinations of a Phone Number 电话号码的字母组合

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

  4. LeetCode——Letter Combinations of a Phone Number

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

  5. [LeetCode] Letter Combinations of a Phone Number

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

  6. [LeetCode] Letter Combinations of a Phone Number(bfs)

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

  7. LeetCode Letter Combinations of a Phone Number (DFS)

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

  8. [LeetCode] Letter Combinations of a Phone Number 回溯

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

  9. LeetCode Letter Combinations of a Phone Number 电话号码组合

    题意:给一个电话号码,要求返回所有在手机上按键的组合,组合必须由键盘上号码的下方的字母组成. 思路:尼玛,一直RE,题意都不说0和1怎么办.DP解决. class Solution { public: ...

随机推荐

  1. 【一步一步】Spring 源码环境搭建

    平时项目中基本上都会用到spring,但是源码还没有深入的了解过.趁这段时间稍微空闲点,开始研究下spring 源码.下面是spring 源码的环境搭建. 主要分为如下步骤: ①安装jdk,gradl ...

  2. 支持苹果IPV6 ONLY 的socket 修改方法

    首先别错误理解以为app 必须支持 ipv6 的服务端, 只需要支持 ipv6的客户端需要访问 ipv4 的服务端. 目前需要经过  NAT64 转换就能达到目的,客户端只需要支持该转换就能实现, 在 ...

  3. CSS预编译与PostCSS以及Webpack构建CSS综合方案

    CSS全称Cascading Style Sheets(层叠样式表),用来为HTML添加样式,本质上是一种标记类语言.CSS前期发展非常迅速,1994年哈肯·维姆·莱首次提出CSS,1996年12月W ...

  4. Java字符串格式化记录

    最近打log的时候用到了字符串的格式化. Java中String格式化和C语言的很类似.把情况都列出来,以后好查询. public static void main(String[] args) { ...

  5. 基于jenkins搭建一个持续集成服务器

    1 引言 1.1 编写目的 指导质量管理部,业务测试组同事进行Jenkins环境部署,通过Jenkins解决测试环境不可控,开发测试环境不一致等问题. 1.2 使用对象 质量管理部.基础研发部,集成部 ...

  6. 构建 MariaDB Galera Cluster 分布式数据库集群(一)

    MariaDB Galera Cluster 介绍 简介 MariaDB集群是MariaDB同步多主机集群,仅支持XtraDB(详见本文结尾注释)/InnoDB存储引擎(虽然有对MyISAM实验支持 ...

  7. 如何重置密码 oracle sys和system

    有时候我们会忘记oracle sys和system的密码,不用担心,通过sqlplus即可修改密码.只能修改,不能找回. 方法如下: 1.打开 cmd界面,输入sqlplus /nolog 显示结果如 ...

  8. ReactiveCocoa有关集合类的使用

    Sequences 集合  表示一个不可变的序列值且不能包含空值, 1.实现NSArray的快速遍历 NSArray *numbers = @[@1, @2, @3, @4, @5, @6]; //通 ...

  9. springboot启动时报错No session repository could be auto-configured.....

    具体异常提示: Error starting ApplicationContext. To display the auto-configuration report re-run your appl ...

  10. python爬煎蛋妹子图--20多行代码搞定煎蛋妹子图库

    如果说一个人够无聊的话... 就会做一些十分美(wei)丽(suo)的事情啦哈哈哈... 好的,话不多说,进入正题. 正如标题所示,我们今天的目标很简单: 代码要少,妹子要好. 步骤如下: 1. 首先 ...