LeetCode-17 电话号码的字母组合
时间:2022-06-24
本文章向大家介绍LeetCode-17 电话号码的字母组合,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
↑点击上面"算法半岛"
关注"算法半岛"第一时间接收最新文章
> 题目:17. 电话号码的字母组合
> 难度:中等
> 分类:字符串
> 解决方案:字符串遍历
今天我们学习第17题电话号码的字母组合,这是一道中等题。像这样字符串的题目经常作为面试题来考察面试者算法能力和写代码能力,因此最好能手写出该题。下面我们看看这道题的题目描述。
题目描述
给定一个仅包含数字 2-9
的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1
不对应任何字母。
示例:
输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
说明: 尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。
分析
这个题目的题意很好理解,让我们求电话号码的字母组合,从数字2到9中每个数字可以代表若干个字母,然后输一串数字,求出所有可能的组合。对于每个数字及其对应的字母可用数组建立对应关系,如下图所示。
我们可以通过这样的对应关系来构成组字符串,如对示例分析的示意图如下所示:
图中叶子节点中字符串即为字母组合。 将上述分析过程转化为 java
代码如下所示:
class Solution { public List<String> letterCombinations(String digits) { // 数字与字母的对应关系 String[] map = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"}; List<String> res = new ArrayList<>(); if(digits.isEmpty()) return res; // 图中树的根节点 res.add("");
// 遍历输入的数字 for(char c : digits.toCharArray()){ res = combine(map[c-'0'], res); }
return res; }
// 根据数字组合字母 private List<String> combine(String digits, List<String> list){ List<String> res = new ArrayList<>();
for(char c : digits.toCharArray()){ for(String s : list){ res.add(s+c); } }
return res; }}
Github地址
LeetCode-17 电话号码的字母组合:https://github.com/JacobLei/leetcode/blob/master/src/main/java/A17_LetterCombinationsofaPhoneNumber.java
参考链接
17. 电话号码的字母组合:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 12个非常适合做外包项目的开源后台管理系统
- R 语言根据条件判断返回ABCD状态
- 贪心法
- MySQL分布式逻辑备份
- OpenGL ES 相机 LUT 滤镜
- Siem落地方案:初识clickhouse
- FFmpeg + OpenGL ES 实现 3D 全景播放器
- 手把手教你自定义实现一个npm audit
- 异步神器CompletableFuture
- IoT安全测试指北
- Kubernetes 故障解决心得(一)
- Kubernetes 临时存储需要限制吗?
- PHP安全:变量的前世今生
- 如何使用ParamSpider在Web文档中搜索敏感参数
- Spring 的 Controller 是单例还是多例?怎么保证并发的安全