Leetcode 17.电话号码的字母组合 - Letter Combinations of a Phone Number - Python - 回溯法

解题思路:

回溯法三部曲:

1.回溯函数的参数;

2.确定终止条;

3.确定单层遍历逻辑;

注意:

这道题有一点很有趣的地方是,你需要先遍历给定的digits字符串,此处可想象成树型结构。digits字符串的长度即树的深度。而遍历字符串,在此处,是以递归的方式进行的。而abc,和def之间的排列组合,是通过多个for循环嵌套进行的(之所以这么说,是因为一个递归里面有一个for循环,多次递归调用里,在逻辑上,就隐含着多个for循环。并不是说实际上在代码字面上有多层嵌套的for循环)。

代码如下:

class Solution:data_set = ['', '', 'abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz']result = []temp = ''def traceBack(self, digits: str, index: int):if index == len(digits):self.result.append(self.temp)returnstr_map = self.data_set[int(digits[index])]for i in str_map:self.temp += iself.traceBack(digits, index+1)self.temp = self.temp[:-1]def letterCombinations(self, digits: str) -> List[str]:self.result = []if len(digits) == 0:return self.resultself.traceBack(digits, 0)return self.result

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

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

相关文章

GEE脚本——GEE中如何查询历史脚本和防丢失记录

很多时候我们会发现我们之前编辑的脚本不见了,本来已经编辑好了但是发现原来的脚本更完美,至于诸如此类的一些问题,当我们在使用GEE中的代码编译器的时候会时不时的出现,这里我们也无需过多担心,这里只要你首次将代码保存在你所创建的项目当中的时候我们就可以查看以往每一…

【爬虫、数据可视化实战】以“人口”话题为例爬取实时微博数据并进行舆情分析

前言: 近期在weibo上讨论的比较热的话题无非就是“人口”了。TaoTao也看了一些大家发的内容。但是感觉单纯的看文字内容不能很直观的反应出来大家的关切。索性就使用爬虫对数据进行爬取,同时结合着数据可视化的方式让数据自己开口说话。那么接下来就让我…

Python源码49:海龟画图turtle画美国旗

---------------turtle源码集合--------------- Python教程91:关于海龟画图,Turtle模块需要学习的知识点 Python源码45:海龟画图turtle画雪容融 Python源码44:海龟画图turtle,画2022卡塔尔世界杯吉祥物 Python教程…

《WebKit 技术内幕》学习之十(3): 插件与JavaScript扩展

3 JavaScript引擎的扩展机制 3.1 混合编程 混合编程由来已久,因为浏览器能力的不足,特别是以前的浏览器甚至不支持内嵌视频和音频等技术,所以导致需要Flash等插件来扩展网页的能力。当然Flash插件是由第三方提供的,大家都可以使…

【FINEBI】finebi中常用图表类型及其适用场景

柱状图(Bar Chart): 比较不同类别或组之间的数量差异:柱状图可以用于比较不同产品、地区、时间段等的销售额、市场份额等。 显示不同时间段的数据变化:通过绘制柱状图,可以观察到销售额、网站流量等随时间…

前端JavaScript篇之实现有序数组原地去重方法有哪些?

目录 实现有序数组原地去重方法有哪些?方法一:使用 Set 数据结构代码实现:思路说明: 方法二:使用双指针遍历代码实现:思路说明: 实现有序数组原地去重方法有哪些? 在 JavaScript 中…

机器学习神器:Sklearn详解

引言 Sklearn (全称 Scikit-Learn) 是基于 Python 语言的机器学习工具。它建立在 NumPy, SciPy, Pandas 和 Matplotlib 之上,里面的 API 的设计非常好,所有对象的接口简单,很适合新手上路。 在 Sklearn 里面有六大任务模块:分别是…

怎样的安全数据交换系统 可以支持信创环境?

首先,我来看看,什么是安全数据交换系统?安全数据交换系统是一种专门设计用于在不同网络环境之间安全传输数据的技术解决方案。它确保数据在传输过程中的完整性、机密性和可用性,同时遵守相关的数据保护法规和行业标准。 那么&…

透明拼接屏显示:技术与应用

在当今的数字化时代,显示技术已成为我们日常生活和工作中的重要组成部分。透明拼接屏作为一种新型的显示技术,以其独特的透明设计和灵活的拼接特性,正逐渐在各个领域得到广泛应用,尼伽小编,将深入探讨透明拼接屏显示的…

灵感无限!12个设计师最爱的网站推荐,覆盖UX、网页设计和国外设计精华

即时设计资源广场 即时设计资源广场是中国优秀的UI设计网站,全中文环境,非常适合中国人使用。UI设计网站即时设计资源广场内置阿里、字节、腾讯、京东、谷歌、华为等设计系统,3000多个UI组件库,每月更新数百个高质量模板&#xf…

websocket服务端本地部署

文章目录 1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功,暴露端口默认99995. 创建隧道映射内网端口6. 查看状态->在线隧道,复制所创建隧道的公网地址加端口号7. 以…

空气净化器or宠物空气净化器?五款猫用空气净化器优质推荐!

作为一个养猫家庭的主人,每天都要面对清理猫砂盘的挑战,这种令人难以形容的气味实在让人难以忍受。尤其是家里有小孩和老人,他们可能会出现过敏性鼻炎等问题,而抵抗力较差的人更容易受到影响。此外,换毛季节到来时&…

性能优化(CPU优化技术)-NEON指令介绍

「发表于知乎专栏《移动端算法优化》」 本文主要介绍了 NEON 指令相关的知识,首先通过讲解 arm 指令集的分类,NEON寄存器的类型,树立基本概念。然后进一步梳理了 NEON 汇编以及 intrinsics 指令的格式。最后结合指令的分类,使用例…

数据运营项目1

下面是一些注意事项: 10w以上就不要用excel去做了会很卡很慢,可以考虑powerbi,用powerbi解决RFM模型 Powerbi替换时,替换没不写就行了,不是空值 主页分组依据就是拉数据透视表 所有工具都要打上双引号 文本不能做减…

Python + Selenium —— ActionChains动作链!

当你需要执行复杂的操作时,比如将一个元素按住拖动到另一个元素上去,需要移动鼠标然后点击并按下键盘某个按键等等。 当然,在 Web 页面上,这种操作好像比较少。 但是,如果遇到了怎么办呢?这就需要用到 Ac…

【Obsidian】【Git】使用gitee同步/保存obsidian笔记

Obisidian是一款markdown软件,使用它可以方便地记笔记、记录科研日常。然而如果在多个设备上使用obsidian,会牵扯到笔记/vault/仓库同步问题。下面来介绍如何用git管理obsidian。 1.创建gitee账号 略 2.下载Obsidian 略 3.新建git仓库 3.1在gitee上…

保姆版Vps安装灯塔(ARL)

因为灯塔的默认端口为5003,所以我们在安装之前就在防火墙里把我们的5003端口打开 打开端口步骤如下: 1.我们打开控制面板,在控制面板里点击 系统和安全 。如下图: 2.接着点击 Windows Defender防火墙,如下图: 3.再…

Vue 3 + Ts 钩子函数(hooks)的用法,以<script setup lang=“ts“/>语法糖形式 #reactive #ref

reactive <template><div><h2 click"increment">{{ count }}</h2></div> </template><script setup lang"ts"> import { ref, onMounted } from vue// 使用reactive创建响应式数据 const state reactive({cou…

架构篇14:高性能数据库集群-读写分离

文章目录 读写分离原理复制延迟分配机制小结 高性能数据库集群的第一种方式是“读写分离”&#xff0c;其本质是将访问压力分散到集群中的多个节点&#xff0c;但是没有分散存储压力&#xff1b;第二种方式是“分库分表”&#xff0c;既可以分散访问压力&#xff0c;又可以分散…

docker容器快速安装启动ES

1、安装 docker a、使用 Homebrew 安装 brew install --cask --appdir/Applications docker b、手动下载安装 1、安装包下载地址&#xff1a;Install Docker Desktop on Mac | Docker Docs 根据自己的笔记本型号选择&#xff0c;我这边选择的是 intel chip 2、下载安装即可&a…