【经典LeetCode算法题目专栏分类】【第11期】递归问题:字母大小写全排列、括号生成

news2024/10/3 0:32:29

  《博主简介》

小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。
更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~
👍感谢小伙伴们点赞、关注!

《------往期经典推荐------》

一、AI应用软件开发实战专栏【链接】
二、机器学习实战专栏【链接】,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】

递归

字母大小写全排列

class Solution:

    def letterCasePermutation(self, S: str) -> List[str]:

        def DFS(s_list, index):

            if index == len(s_list):

                res.append(''.join(s_list))

                return 

            # 未修改当前字符(字母或者数字)的一条分支  

            DFS(s_list, index + 1) 

            # 修改当前字母的的另一条分支

            if s_list[index].isalpha():

                s_list[index] = chr(ord(s_list[index]) ^ 32)

                DFS(s_list, index + 1)

        res = []

        S = list(S)

        DFS(S, 0)

        return res

# 回溯

class Solution:

    def permutation(self, s: str) -> List[str]:

        def backtrack(s, cur_s):

            if len(cur_s) == len(s):

                res.append(cur_s)

                return

            for i in range(len(s)):

                if i > 0 and s[i] == s[i-1] and visited[i-1] == False:

                    continue

                if visited[i] == False:

                    visited[i] = True

                    backtrack(s, cur_s + s[i])

                    visited[i] = False

        res = []

        visited = [False for _ in range(len(s))]

        s = ''.join(sorted(list(s)))

        backtrack(s,'')

        return res

22.括号生成

class Solution:

    def generateParenthesis(self, n: int) -> List[str]:

        res = []

        def generator(left, right, s):

            if left == n and right == n:

                res.append(s)

                return

            if left < n:

                generator(left+1, right, s + '(')

            if left > right:

                generator(left, right+1, s + ')')

        generator(0,0,'')

        return res

关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!

觉得不错的小伙伴,感谢点赞、关注加收藏哦!

欢迎关注下方GZH:阿旭算法与机器学习,共同学习交流~

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

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

相关文章

设计模式----解释器模式

一、简介 解释器模式使用频率并不高&#xff0c;通常用来构建一个简单语言的语法解释器&#xff0c;它只在一些非常特定的领域被用到&#xff0c;比如编译器、规则引擎、正则表达式、sql解析等。 解释器模式是行为型设计模式之一&#xff0c;它的原始定义为&#xff1a;用于定义…

GIT具体配置步骤详解

GIT配置具体步骤如下 SDK 使用 Repo 工具管理&#xff0c;拉取 SDK 需要配置安装 Repo 工具。 Repo is a tool built on top of Git. Repo helps manage many Git repositories, does the uploads to revision control systems, and automates parts of the development workf…

4.svn版本管理工具使用

1. 什么是SVN 版本控制 它可以记录每一次文件和目录的修改情况,这样就可以借此将数据恢复到以前的版本,并可以查看数据的更改细节! Subversion(简称SVN)是一个自由开源的版本控制系统。在Subversion管理下,文件和目录可以超越时空 SVN的优势 统一的版本号 Subversi…

MySQL子查询、WITH AS、LAG查询统计数据实战

需求 给出一个比较常见的统计类业务需求&#xff1a;统计App&#xff08;包括iOS和Android两大类&#xff09;每日新注册用户数、以及累计注册用户数。 数据库采用MySQL&#xff0c;根据上面的需求&#xff0c;不难设计表如下&#xff1a; create table os_day_count(stat_d…

【必读】从MII到RGMII,一文了解以太网PHY芯片不同传输接口信号时序!

1、概述 不管是使用FPGA还是ARM&#xff0c;想要实现以太网通信&#xff0c;都离不开以太网PHY芯片&#xff0c;其功能如下所示&#xff0c;FPGA或者ARM将以太网数据发送给PHY芯片&#xff0c;PHY会将接收数据转换成模拟的差分信号传输到RJ45座子&#xff0c;最后通过网线与CPU…

数据库之MySQL的介绍

操作系统&#xff1a; windows&#xff1a;win10、win11、win7、windows Server2016 Linux/Unix &#xff1a;红帽&#xff08;RedHat&#xff09;、Bebian、SUSE MacOS Linux系统&#xff1a;CantOS&#xff08;yum、dnf&#xff09;、Ubuntu&#xff08;apt、apt—get&am…

IP应用场景的规划

IP地址作为互联网通信的基石&#xff0c;在现代社会中扮演着至关重要的角色。本文将深入探讨IP地址在不同应用场景中的规划与拓展&#xff0c;探讨其在网络通信、安全、商业、医疗和智能城市等领域的关键作用与未来发展趋势。 IP地址的基本原理 IP地址是分配给网络上设备的数…

Odoo16 实用功能之Form视图详解(表单视图)

目录 1、什么是Form视图 2、Form视图的结构 3、源码示例 1、什么是Form视图 Form视图是用于查看和编辑数据库记录的界面。每个数据库模型在Odoo中都有一个Form视图&#xff0c;用于显示该模型的数据。Form视图提供了一个可编辑的界面&#xff0c;允许用户查看和修改数据库记…

TokenFlow详解

https://github.com/omerbt/TokenFlow/issues/25 https://github.com/omerbt/TokenFlow/issues/31 https://github.com/omerbt/TokenFlow/issues/32 https://github.com/eps696/SDfu register_extended_attention_pnp1. 为所有BasicTransformerBlock layer的attn1重构forward2.…

MySQL 数据库系列课程 05:MySQL命令行工具的配置

一、Windows启动命令行工具 &#xff08;1&#xff09;打开 Windows 的开始菜单&#xff0c;找到安装好的 MySQL&#xff0c;点击MySQL 8.0 Command Line Client - Unicode&#xff0c;这个带有 Unicode 的&#xff0c;是支持中文的&#xff0c;允许在命令行中敲中文。 &…

C++的一些零散小知识

不定时更新一些 文章目录 1、空指针nullptr的类型为std::nullptr_t2、函数定义中&#xff0c;如果不需要使用参数的值&#xff0c;可以省略参数名3、静态成员变量在C17之后可以直接在类内定义并初始化了 1、空指针nullptr的类型为std::nullptr_t 一个毫无意义的例子&#xff1…

Python自动化办公,又双叒增加功能了!

大家好,这里是程序员晚枫,今天给大家分享一下Python自动化办公,最近更新的功能。 以下代码,全部都可以免费使用哦~! 彩色的输出 有没有觉得python自带的无色输出看腻了?增加了彩色输出的功能,可以实现无痛替换。 上面效果的实现代码如下,👇 自动收发邮件 这个12月发…

Python字符串处理全攻略(三):常用内置方法轻松掌握

目录 引言Python字符串常用内置方法str.index()功能介绍语法注意事项总结 str.startswith()功能介绍语法示例注意事项 str.expandtabs()功能介绍语法示例注意事项总结 str.splitlines()功能介绍语法示例注意事项总结 str.swapcase()功能介绍语法示例注意事项 结束语 引言 欢迎…

【Python】面向对象

一、初识对象 二、成员方法 三、类和对象 四、构造方法 五、其它内置方法 六、封装 七、继承 八、类型注解 九、多态 面向对象概念 面向对象编程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;是一种编程范式&#xff0c;它将数据和操作数据的方法组织…

【机器学习】【线性回归】梯度下降

文章目录 [toc]数据集实际值估计值估计误差代价函数学习率参数更新Python实现线性拟合结果代价结果 数据集 ( x ( i ) , y ( i ) ) , i 1 , 2 , ⋯ , m \left(x^{(i)} , y^{(i)}\right) , i 1 , 2 , \cdots , m (x(i),y(i)),i1,2,⋯,m 实际值 y ( i ) y^{(i)} y(i) 估计值 h …

HTML美化网页

使用CSS3美化的原因 用css美化页面文本,使页面漂亮、美观、吸引用户 可以更好的突出页面的主题内容,使用户第一眼可以看到页面主要内容 具有良好的用户体验 <span>标签 作用 能让某几个文字或者某个词语凸显出来 有效的传递页面信息用css美化页面文本&#xff0c;使页面漂…

事务相关知识

库存问题 先扣库存–>如果订单服务崩溃了&#xff0c;但是库存服务没有崩溃&#xff0c;这个时候库存扣减成功了&#xff0c;那么就会库存不能归还,&#xff0c;无法回滚。 后扣库存–>1&#xff1a;调用库存服务失败(比如网络抖动&#xff0c;库存服务挂了)–>回滚。…

VSCode运行时弹出powershell

问题 安装好了vscode并且装上code runner插件后&#xff0c;运行代码时总是弹出powershell,而不是在vscode底部终端 显示运行结果。 解决方法 打开系统cmd ,在窗口顶部条右击打开属性&#xff0c;把最下面的旧版控制台选项取消&#xff0c;即可

python区块链简单模拟【01】

完整代码 https://gitee.com/ihan1001 https://github.com/ihan1001 重点&#xff1a;时间戳&#xff0c;MD5哈希&#xff0c;SHA256哈希&#xff0c;base64一种用64个字符表示任意二进制数据的方法&#xff0c;ECC椭圆曲线算法 import time time.time()datetime.now().strfti…

Ignite内存配置

配置内存 #1.内存架构 #1.1.概述 Ignite内存架构通过可以同时在内存和磁盘上存储和处理数据及索引&#xff0c;得到了支持磁盘持久化的内存级性能。 多层存储的运行方式类似于操作系统&#xff08;例如Linux&#xff09;的虚拟内存。但是这两种类型架构之间的主要区别是&…