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

LeetCode热题100--17. 电话号码的字母组合

题目

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

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
在这里插入图片描述
示例 1:
输入:digits = “23”
输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]

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

题解

class Solution {Map<Character, String> phoneMap = new HashMap<>() {{put('2', "abc");put('3', "def");put('4', "ghi");put('5', "jkl");put('6', "mno");put('7', "pqrs");put('8', "tuv");put('9', "wxyz");}};List<String> res = new ArrayList<String>();StringBuffer buffer = new StringBuffer();public List<String> letterCombinations(String digits) {//解决快速寻找数组中所有存在目标字母的方法: Map加回溯if (digits.length() == 0)  return res;backtrack( digits, 0);return res;}public void backtrack(String digits, int index) {if (index == digits.length()) res.add(buffer.toString());else {char digit = digits.charAt(index);String letters = phoneMap.get(digit);for (int i = 0; i < letters.length(); i++) {buffer.append(letters.charAt(i));backtrack( digits, index+1);buffer.deleteCharAt(index);}}}
}

解析

出自:电话号码的字母组合

class Solution {Map<Character, String> phoneMap = new HashMap<>() {{  // 初始化电话号码到字母的对应关系put('2', "abc");put('3', "def");put('4', "ghi");put('5', "jkl");put('6', "mno");put('7', "pqrs");put('8', "tuv");put('9', "wxyz");}};List<String> res = new ArrayList<String>();  // 初始化结果列表,用于存储所有的组合结果StringBuffer buffer = new StringBuffer();  // 初始化字符串缓冲区,用于保存每个数字对应的字母组合public List<String> letterCombinations(String digits) {  // main方法,处理输入为空的情况并调用回溯函数if (digits.length() == 0)  return res;backtrack(digits, 0);return res;}public void backtrack(String digits, int index) {  // 处理每一个数字对应的字母组合的回溯函数if (index == digits.length())  res.add(buffer.toString());else {char digit = digits.charAt(index);    // 获取当前索引位置上的输入位数字(如'2', '3', ..., '9'等)String letters = phoneMap.get(digit);  // 获得对应的字母组合,例如"abc","def"等for (int i = 0; i < letters.length(); i++) {  buffer.append(letters.charAt(i));     // 将每一种可能的结果添加到缓冲区中backtrack(digits, index + 1);         // 进行回溯函数调用,处理下一个数字的字母组合buffer.deleteCharAt(index);           // 删除刚刚添加的字符(这个过程需要重复进行,因为我们是按递归逐个字母遍历)}}}
}
http://www.dtcms.com/a/609307.html

相关文章:

  • C++初阶(07):STL简介
  • 中国哪些网站做软装建设彩票网站合法吗
  • 百度网站评分椒江做网站
  • yolov8目标检测训练在rk3588上部署
  • 学术数据可视化:高效图表工具助力科研数据精准呈现
  • 焦作高端网站建设宁波seo外包服务平台
  • Apple 官方提供 Xcode 周边实用工具集,包含CarPlay 模拟器,网速限制等 Additional Tools for Xcode 26.1,
  • 《隐藏(Hide)》
  • 基于Mask R-CNN的汽车防夹手检测与识别系统
  • 从正向困境到反向破局:详解地下城游戏的动态规划解法
  • 常州新北区网站建设东莞搜索排名提升
  • 专题:2025构建全自动驾驶汽车生态系统:中国智能驾驶行业全景研究报告|附80+份报告PDF、数据仪表盘汇总下载
  • uni-app 将 base64 图片编码转为 Blob 本地文件路径
  • Ethernaut Level 16: Preservation - Delegatecall与存储布局操纵
  • 1040视频app深圳网站建设seo推广优化
  • MySQL 中的 MVCC
  • Answer 开源平台搭建:cpolar 内网穿透服务助力全球用户社区构建
  • 从 Spring @Retryable 到 Kafka 原生重试:消息重试方案的演进与最佳实践
  • 做宣传用什么网站好网络设计与实施课程设计
  • 云盘做网站文件网站内容不被收录
  • 服务器部署,用 nginx 部署后页面刷新 404 问题,宝塔面板修改(修改 nginx.conf 配置文件)
  • 500额度claude4.5无线续杯教程
  • 身智能-一文详解视觉-语言-动作(VLA)大模型(3)
  • 【图像处理基石】 怎么让图片变成波普风?
  • MySQL 与 Redis 的数据一致性问题
  • YOLOv8-SOEP-RFPN-MFM水果智能分类与检测模型实现
  • 树莓派UBUNTU 24.04 PART 5 树莓派4b UBUNTU 系统安装miniconda、opencv、tensorflow
  • 学校网站建设开发商中信建设有限责任公司 电话
  • 24 小时知识导航:使用 cpolar 内网穿透服务访问 Perplexica
  • 【数据结构】单调队列