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

news/2024/12/21 22:18:14/

给定一个仅包含数字 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.ppmy.cn/news/1534168.html

相关文章

【10】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-泛型基础全解(泛型函数、泛型接口、泛型类)及参数、接口补充

序言&#xff1a; 本文详细讲解了关于ArkTs语言中的泛型&#xff0c;其中包含泛型函数、泛型接口、泛型约束、泛型类及其中参数的使用方法&#xff0c;补充了一部分接口相关的知识&#xff0c;包括接口的继承和具体实现&#xff0c;也写到了一些边边角角的小知识&#xff0c;剩…

Spring Boot在甘肃非遗文化网站开发中的应用

2 相关技术 2.1 SSM框架介绍 本课题程序开发使用到的框架技术&#xff0c;英文名称缩写是SSM&#xff0c;在JavaWeb开发中使用的流行框架有SSH、SSM、SpringMVC等&#xff0c;作为一个课题程序采用SSH框架也可以&#xff0c;SSM框架也可以&#xff0c;SpringMVC也可以。SSH框架…

【RabbitMQ 项目】服务端:信道模块

文章目录 一.概念辨析1.什么是信道2.为什么要有信道3.怎么实现信道 二.实现思路1.定义信道2.定义连接信道管理类 三.代码实践 一.概念辨析 1.什么是信道 信道是在用户层的一个逻辑概念&#xff0c;是比 TCP 连接更加细粒度的通信通道&#xff0c;客户端想要和服务端通信&#…

05.useIsomorphicEffect

在 React 应用开发中,特别是涉及到**服务器端渲染(SSR)**时,正确处理副作用是一个常见挑战。useIsomorphicEffect 钩子提供了一种智能的方式来在服务器端和客户端环境中使用适当的副作用钩子。这个自定义钩子可以帮助开发者避免与 SSR 相关的常见陷阱,提高应用的性能和可靠…

vue2与vue3知识点

1.vue2&#xff08;optionsAPI&#xff09;选项式API 2.vue3&#xff08;composition API&#xff09;响应式API vue3 setup 中this是未定义&#xff08;undefined&#xff09;vue3中已经开始弱化this vue2通过this可以拿到vue3setup定义得值和方法 setup语法糖 ref > …

vmvare虚拟机centos 忘记超级管理员密码怎么办?

vmvare虚拟机centos 忘记超级管理员密码怎么办?如何重置密码呢? 一、前置操作 重启vmvare虚拟机的过程中,长按住Shift键 选择第一个的时候,按下按键 e 进入编辑状态。 然后就会进入到类似这个界面中。 在下方界面 添加 init=/bin/sh,然后按下Ctrl+x进行保存退出。 init=/bi…

UI设计师面试整理-面试中的实际设计挑战

在UI设计师的面试中,面试官常常会给出一个实际设计挑战。这类挑战旨在评估你的设计思维、解决问题的能力、创意以及你如何在有限的时间内应对设计任务。应对这些挑战需要冷静、条理清晰和策略性地展示你的技能。以下是如何准备和应对面试中的实际设计挑战的建议: 1. 理解设计…

代码随想录算法训练营DAY10之动态规划(二)背包问题

01背包理论基础 406、分割等和子集 力扣题目链接 题目描述 给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200 示例 1: 输入: [1, 5, 11, 5]输出: true …