力扣17. 电话号码的字母组合

Problem: 17. 电话号码的字母组合

文章目录

  • 思路及解法
  • 复杂度
  • Code

题目描述

在这里插入图片描述在这里插入图片描述

思路及解法

1.将电话号码和对应的数组存入数组中创建映射关系
2.编写,并调用回溯函数,当决策阶段等于digits的长度时,将当前的决策路径添加到结果集合中,否则从digits字符串的第一个字符开始回溯调用!我们在回溯时利用一个变量记录决策阶段,每次取出对应决策阶段可能的字母,并在此阶段上回溯

复杂度

时间复杂度:

最坏时间复杂度: O ( 3 m × 4 n ) O(3^m \times 4^n) O(3m×4n),其中m表示选择对应只有三个字母的数字的个数,n表示对应四个字母的个数

空间复杂度:

O ( n + m ) O(n + m) O(n+m)

Code

class Solution {//Recode the resultvector<string> res;//Recode the decision pathvector<char> track;
public:/*** Get the all possible combinations** @param digits The combination given by topic* @return vector<string>*/vector<string> letterCombinations(string digits) {if (digits.size() == 0) {return {};}//Create the reflectionvector<string> mappings(10);mappings[2] = "abc";mappings[3] = "def";mappings[4] = "ghi";mappings[5] = "jkl";mappings[6] = "mno";mappings[7] = "pqrs";mappings[8] = "tuv";mappings[9] = "wxyz";backtrack(mappings, digits, 0, track);return res;}/*** Use backtracking to find all possible combinations** @param mappings Mapping between letters and numbers* @param digits Combination of numbers given by topic* @param stage Decision stage* @param track Decision path*/void backtrack(vector<string> &mappings, string &digits, int stage, vector<char> &track) {//End conditionif (stage == digits.length()) {res.push_back(string(track.begin(), track.end()));return;}string mapping = mappings[digits[stage] - '0'];for (int i = 0; i < mapping.length(); ++i) {track.push_back(mapping[i]);backtrack(mappings, digits, stage + 1, track);track.pop_back();}}
};

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

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

相关文章

技术桃花源

&#xff08;1&#xff09; 京东在1998年时是一家中关村普通的小铺面&#xff0c;老板是刚刚从人民大学社会学系毕业的高材生刘强东。但是这样的铺面在中关村有2万多家。十年后&#xff0c;京东已经拥有11家铺面&#xff0c;年营收已经达到5000多万。 2007年&#xff0c;老刘跑…

[python3] 设置多进程名称并且在ps命令中可见

Centos7 系统 setproctitle 是一个 Python 模块&#xff0c;用于设置进程标题&#xff08;process title&#xff09;。进程标题是在系统中用来标识进程的名字&#xff0c;通常会显示在系统级的进程管理工具&#xff08;如 ps 命令&#xff09;中。通过设置进程标题&#xff0c…

ChatGPT登陆提示:“Please unblock challenges.cloudflare.com to proceed…”

ChatGPT登陆时提示&#xff1a;“Please unblock challenges.cloudflare.com to proceed”&#xff0c; 说明&#xff1a;请解除对challenges.cloudflare.com的屏蔽以继续 原因及解决方法&#xff1a; 1、出现这个问题&#xff0c;一般都是网络和本地环境问题&#xff0c;可以…

Linux权限维持后门及应急响应

本次应急响应实验用kali和centos7来充当攻击机和靶机 kali&#xff1a;192.168.10.130 centos7&#xff1a;192.168.10.155 前提&#xff1a; 用kali连接到centos7上面ssh root192.168.10.155 一、SSH软链接 任意密码登录即可发现程度&#xff1a;|||||| ln -sf /usr/sbi…

超实用!免费软件站大盘点,总有一款适合你

相信用Mac电脑的同学都知道一个网站MacWK&#xff0c;可以白嫖几乎所有常用软件&#xff0c;不用付费&#xff0c;但不好的消息是在2022年10月宣布关站&#xff0c;小编从此走上了开源免费的道路&#xff0c;尽管不太好用&#xff0c;奈何口袋木有钱&#xff0c;经过小编的不断…

C#开发中方法使用的问题注意

C#开发中&#xff0c;我们在进行方法内嵌时&#xff0c;需要注意方法回传带值时&#xff0c;我们需要对方法回传的值进行一个赋值传递 如下所示 console.WriteLine("请输入你的爱好&#xff1a;"); string aihao Console.ReadLine(); name ChangeData(name);同时在…

KT6368A蓝牙主从一体芯片_功能简要说明

一、功能简介 新增KT1328A芯片方案的蓝牙主从一体版本&#xff0c;实现的是主从一体相互切换&#xff0c;也就是说可以设置为主机【类似于手机的角色】&#xff0c;也可以设置为从机角色&#xff0c;通过AT指令 此版本的型号命名为&#xff1a;KT1328A-SOP8 。后续需要下单…

2024-Spring IOC 和 AOP源码分析(上篇)

**前言&#xff1a;**笔者最近面了几次大厂。。。开局Spring源码暴击 之前看过忘了写篇总结。。。 1、介绍一下Spring 核心组件&#xff1a; 常用模块&#xff1a; 常用注解&#xff1a; 2、说一下SpringIOC原理 概念&#xff1a;Spring 通过一个配置文件描述 Bean 及 B…

Linux系统中安装Docker

用Linux既可以用虚拟机操作&#xff0c;也可以自己弄一个云服务器进行操作&#xff0c;两者没啥区别。 操作之前需要将用户等级升级到root级别&#xff0c;防止有些操作因为权限限制而不能操作。 安装docker非常简单&#xff0c;只需要一直按照下列命令顺序进行操作即可。 安装…

一文3000字从0到1实现基于requests框架接口自动化测试项目实战(建议收藏)

01、requests的安装 windows下执行如下命令 pipinstallrequests-ihttp://pypi.douban.com/simple/--trust-host pypi.douban.com mac终端下执行如下命令 python3-mpipinstallrequests-ihttp://pypi.douban.com/simple/--trust-host pypi.douban.com 02、自动化requests模块…

“灯塔”——一个让人爱不释手的前端监测工具

引言 "灯塔"&#xff08;fee&#xff09;作为一个前端监控系统&#xff0c;通常具备捕获浏览器端错误、性能监控、用户行为跟踪等功能。它的主要目的是帮助开发者了解他们的网站或应用在用户端的表现&#xff0c;以及时发现并解决问题。下面是关于这种系统的一些关键…

ODIN靶机渗透vulnhub

使用kali的netdiscover -r 192.168.2.0或arp-scan -l命令来查看当前局域网里正在运行的主机ip地址 这里的这个192.168.2.46就是靶机的ip地址 然后使用nmap工具进行扫描&#xff0c;发现开放了一个80端口&#xff0c;http协议&#xff0c;然后进行探测http 这里我使用的工具是…