当前位置: 首页 > news >正文

Java——电话号码的字母组合

题目链接

leetcode在线oj题——电话号码的字母组合

题目描述

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

在这里插入图片描述

题目示例

示例 1:
输入:digits = “23”
输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]

示例 2:
输入:digits = “”
输出:[]

示例 3:
输入:digits = “2”
输出:[“a”,“b”,“c”]

题目提示

  • 0 <= digits.length <= 4
  • digits[i] 是范围 [‘2’, ‘9’] 的一个数字。

解题思路

首先将电话键盘上的按键数和对应的字母用HashMap存储起来

使用深度优先搜索的思想

定义一个List< String > 类型的result,用来存储结果
定义DFS方法,参数分别为digits,result,和当前阶段形成的curStr,当前遍历到的下标digitIndex,和hashmap

当当前位置下标digitIndex,和digits的长度相等,说明已经遍历到了最后一个位置,那么就在result中添加curStr

用数字从hashmap中取出对应的字符串,遍历这个字符串的每个位置
DFS再次递归,传入curstr加对应位置的字符(方便回溯),digitIndex + 1(方便回溯)

最终返回result即可

代码

class Solution {public void DFS(String digits, List<String> result, String curStr,int digitIndex, HashMap<Character, String> hashMap){if(digitIndex == digits.length()){result.add(curStr);return;}//获取数字对应的字符集String strMap = hashMap.get(digits.charAt(digitIndex));for (int i = 0; i < strMap.length(); i++) {char ch = strMap.charAt(i);DFS(digits, result, curStr + ch, digitIndex + 1, hashMap);}}public List<String> letterCombinations(String digits) {HashMap<Character, String> hashMap = new HashMap<>();hashMap.put('2', "abc");hashMap.put('3', "def");hashMap.put('4', "ghi");hashMap.put('5', "jkl");hashMap.put('6', "mno");hashMap.put('7', "pqrs");hashMap.put('8', "tuv");hashMap.put('9', "wxyz");List<String> result = new ArrayList<>();if(digits.length() == 0){return result;}DFS(digits, result, "", 0, hashMap);return result;}
}
http://www.lryc.cn/news/26979.html

相关文章:

  • LDR6028市面上最具有性价比的Type-C OTG音频协议方案
  • SpringMVC-0228
  • 【测试岗】那个准点下班的人,比我先升职了...
  • 【C++】适配器模式 -- stack/queue/dqueue
  • sql server 分页查询
  • RV1126新增驱动IMX415 SENSOR,实现v4l2抓图
  • Hive 数据倾斜
  • 2月刚上岸字节跳动测试岗面经
  • 图解KMP算法
  • Java Map和Set
  • 【C/C++ 数据结构】-八大排序之 冒泡排序快速排序
  • 苹果ipa软件下载网站和软件的汇总
  • 深度学习-【语义分割】学习笔记4 膨胀卷积(Dilated convolution)
  • 【10】SCI易中期刊推荐——工程技术-计算机:人工智能(中科院2区)
  • 模电计算反馈系数,有时候转化为计算电阻分压的问题
  • 专治Java底子差,不要再认为泛型就是一对尖括号了
  • PayPal轮询收款的那些事儿
  • 【Linux】项目自动化构建工具——make/Makefile
  • 成本降低90%,OpenAI正式开放ChαtGΡΤ
  • hls.js如何播放m3u8文件(实例)?
  • 大数据平台建设方法论集合
  • 25- 卷积神经网络(CNN)原理 (TensorFlow系列) (深度学习)
  • 把数组里面数值排成最小的数
  • 云his系统源码 SaaS应用 基于Angular+Nginx+Java+Spring开发
  • 小红书场景营销怎么做?场景营销主要模式有哪些
  • c++基础——数组
  • odoo15 登录界面的标题自定义
  • 【内网服务通过跳板机和公网通信】花生壳内网穿透+Nginx内网转发+mqtt服务搭建
  • 【多线程常见面试题】
  • 深度剖析指针(下)——“C”