LeetCode[中等] 17. 电话号码的字母组合

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

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

思路 回溯法 

log:当前结果数组;level:记录当前数组的位置

递归结束条件是log.Length = digits.Length

将int与string类型对应关系存在字典中,通过digits[i] 找对应的value,遍历value长度,先将字符加入log,然后递归处理下一个level,恢复状态,撤销选择

result = []
def backtrack(路径, 选择列表):if 满足结束条件:result.add(路径)returnfor 选择 in 选择列表:做选择backtrack(路径, 选择列表)撤销选择
public class Solution {List<string> res = new List<string>();public IList<string> LetterCombinations(string digits) {if(string.IsNullOrWhiteSpace(digits))return res;Dictionary<char, string> map = new Dictionary<char, string>(){{'2', "abc"},{'3', "def"},{'4', "ghi"},{'5', "jkl"},{'6', "mno"},{'7', "pqrs"},{'8', "tuv"},{'9', "wxyz"}};_LetterCombinations(digits, String.Empty, map, 0);return res;}private void _LetterCombinations(string digits, string log, Dictionary<char, string> map, int level){if(log.Length == digits.Length){res.Add(log);return;}string str = map[digits[level]];for(int i = 0; i < str.Length; i++){log = log + str[i];_LetterCombinations(digits, log, map, level + 1);log = log.Remove(log.Length - 1);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/434806.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue-cli,element-plus,axios,proxy

一、vue-cli vue-cli俗称vue脚手架&#xff0c;是vue官方提供的快速生成vue 工程化项目的工具。 1.官网&#xff1a;https://cn.vuejs.org/ 中文官网: https://cli.vuejs.org/zh/ 特点&#xff1a;基于webpack&#xff0c;功能丰富且易于扩展&#xff0c;支持创建vue2和vu…

【学习笔记】手写 Tomcat 四

目录 一、Read 方法返回 -1 的问题 二、JDBC 优化 1. 创建配置文件 2. 创建工具类 3. 简化 JDBC 的步骤 三、修改密码 优化返回数据 创建修改密码的页面 注意 测试 四、优化响应动态资源 1. 创建 LoginServlet 类 2. 把登录功能的代码放到 LoginServlet 类 3. 创…

springcloud 面试题

什么是微服务&#xff1f; 本文导图&#xff1a;SpringCloud 梳理-ProcessOn 分布式架构CAP理论 CAP定理是分布式系统中最基础的原则&#xff0c;所以理解和掌握了CAP对系统架构的设计至关重要。分布式架构下所有系统不可能同时满足以下三点&#xff1a;Consisteny&#xff08…

一起发现CMake太美-02-CMake是什么CMake的运行原理

本系列课程的主要内容包括&#xff1a; 点击本课程的 链接 可以进入视频课程的学习。 下面介绍本系列课程的第二课的主要内容&#xff0c;本节课从CMake是什么&#xff0c;能做什么&#xff0c;以及CMake的远亲近邻入手&#xff0c;让大家对CMake有一个大致的了解。 1. CMak…

解释器模式原理剖析和Spring中的应用

解释器模式原理剖析和Spring中的应用 解释器模式 是一种行为型设计模式&#xff0c;它定义了一种语言的文法表示&#xff0c;并提供了一个解释器来处理该文法的表达式。解释器模式可以用于构建语法解释器&#xff0c;例如计算器、简单编程语言的解释器等。 核心思想&#xff1a…

Java:插入排序

目录 排序的概念 插入排序 直接插入排序 哈希排序 排序的概念 排序&#xff1a;所谓的排序&#xff0c;就是使一串记录&#xff0c;按照某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个…

OpenCV系列教程三:形态学、图像轮廓、直方图

文章目录 一、形态学1.1 阈值处理1.1.1 全局阈值处理1.1.2 全局阈值处理之Otsus 阈值法1.1.3 自适应阈值处理 1.2 腐蚀与膨胀1.2.1 腐蚀操作1.2.2 创建形态学卷积核1.2.3 膨胀操作 1.3 开运算和闭运算1.4 形态学梯度1.5 顶帽操作(tophat)1.6 黑帽操作&#xff08;Black Hat&…

SpringBoot集成Matlab软件实战

在项目中处理矩阵等复杂数据结构的时候&#xff0c;可以用Matlab程序来运行&#xff0c;其优点是很多的。 专用工具箱和强大的矩阵运算能力&#xff1a;MATLAB 拥有强大的数学工具箱和优化工具箱&#xff0c;适合处理大规模矩阵运算以及水文模型的率定。MATLAB 的 Optimization…

2024平价电容笔推荐!精选五大靠谱电容笔测评盘点!

现在电子设备已经成为我们生活、学习和工作中不可或缺的重要工具。而电容笔作为与电子设备紧密配合的配件&#xff0c;其重要性也日益凸显&#xff0c;为我们的数字操作体验带来极大的便利和提升。然而&#xff0c;市场上电容笔的品牌众多&#xff0c;价格、性能和品质参差不齐…

STM32F407HAL库输出互补PWM波以及死区时间计算

互补PWM波配置 STM32F407VET6的高级定时器TIM1、TIM8可以生成互补的PWM波&#xff0c;用HAL库配置非常方便。 我们使用高级定时器TIM1&#xff0c;选择一个通道&#xff08;我这里选择通道二&#xff09;&#xff0c;然后选择PWM Generation CH2 CH2N。这里N的意思是互补&…

字符串逆序

字符串逆序&#xff0c;面试常考点&#xff0c;由于实现思路很容易&#xff0c;面试官也通常会让你使用多种解法实现&#xff0c;并手写c伪代码&#xff0c;其中每种解法的时空复杂度都要很清楚&#xff0c;能够分析&#xff0c;尤其是最后一种递归实现属于比较进阶的思维了&am…

基于Python大数据的B站热门视频的数据分析及可视化系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

遗传算法与深度学习实战——使用进化策略实现EvoLisa

遗传算法与深度学习实战——使用进化策略实现EvoLisa 0. 前言1. 使用进化策略实现 EvoLisa2. 运行结果相关链接 0. 前言 我们已经学习了进化策略 (Evolutionary Strategies, ES) 的基本原理&#xff0c;并且尝试使用 ES 解决了函数逼近问题。函数逼近是一个很好的基准问题&…

【Git】克隆主项目,并同时克隆所有子模块

子模块 带有箭头的文件夹&#xff08;relaxed_ik_core&#xff09;通常表示这是一个 Git 子模块&#xff08;submodule&#xff09;。Git 子模块是一种嵌入式的 Git 仓库&#xff0c;它允许你在一个仓库中引用其他的 Git 仓库。换句话说&#xff0c;relaxed_ik_core 不是这个项…

基于python+spark的外卖餐饮数据分析系统设计与实现(含论文)-Spark毕业设计选题推荐

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Php和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…

YOLOv8 Windows c++推理

#添加一个**yolov8\_。onx **和/或**yolov5\_。Onnx **模型(s)到ultralytics文件夹。 #编辑**main.cpp**来改变**projectBasePath**来匹配你的用户。#请注意&#xff0c;默认情况下&#xff0c;CMake文件将尝试导入CUDA库以与opencv dnn (cuDNN) GPU推理一起使用。 #如果你的Op…

在matlab中Application Compiler后的软件无法打开

&#x1f3c6;本文收录于《全栈Bug调优(实战版)》专栏&#xff0c;主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&am…

怎么给儿童掏耳朵比较安全?5款安全的儿童掏耳勺!

儿童的耳部娇嫩&#xff0c;在为其掏耳朵时需格外谨慎。市面上的传统耳勺存在诸多风险&#xff0c;稍不注意会刮伤儿童的耳道肌肤。在此建议家长们为孩子选用儿童专用可视挖耳勺。这种挖耳勺能够让家长清晰地看到孩子耳道内的情况&#xff0c;从而更加安全、精准地为孩子清理耳…

React 启动时webpack版本冲突报错

报错信息&#xff1a; 解决办法&#xff1a; 找到全局webpack的安装路径并cmd 删除全局webpack 安装所需要的版本

Docker Desktop 安装Centos 7.9 使用yum install不可用问题

安装centos镜像并run之后&#xff0c;使用yum install 命令安装出现如下错误&#xff0c;可使用此命令替换mirror。 报错信息&#xff1a; Could not retrieve mirrorlist http://mirrorlist.centos.org/?release7&archaarch64&repoos&infracontainer error was…