力扣题库刷题笔记20-有效的括号

news2024/11/22 16:08:08

1、题目如下:

2、个人Python代码实现如下:

        第一次读题就理解错了题意,以为是只判断小括号闭合,大括号、中括号只是干扰元素。再次读题后,代码实现如下:

        以上代码仍旧是没有理解清楚题意,以为是只要左括号(在右括号)右边即可,大中括号以此类推。所以通过切片来进行判断,但是代码的逻辑仍然有漏洞,没有考虑到左括号在字符串最后一位,导致下标越界。

         中间尝试过分别使用count(判断元素存在个数)、index(查询元素下标)、find(判断元素是否存在,存在则返回下标,不存在则返回-1),但是或多或少都理解错了题意:

        跳过中间其他错误的尝试,以上代码也是最后一次对于题意的错误的理解,以为是每一种括号中间不能有其他括号元素。

        经过仔细思考,突然想起华为机考的一道递增字符串的题,取巧后答案很简单,同样也可以用于这道题,思路如下:

        如果需要返回True,则字符串里面一定存在'()'、'[]'、'{}'这3个元素其中一个,然后将其替换为空,继续判断是否存在这3个元素,循环结束后,如果字符串为空,则返回True。反之,如果字符串中存在不完整的括号(某一种括号只有左括号或者右括号),在循环过程结束后,字符串长度一定不为0。同理,如果某一种括号中间存在其他不完整的括号,那么循环结束后,字符串也一定不为空。是所以代码实现如下:

        以上是思路没有问题,但是代码错误,原因是进入了死循环。这里按照预期,进入第一次循环后,标志位flag就会变成0,从而跳出循环,但是并没有。Pycharm自带的观察元素flag值一直为1,但是手动添加的观察元素值确为0,这一点我并不明白。

        这里询问了某田大佬,做了循环次数的代码限制,终于是成功了

        最后还是没有太明白为啥会有问题,浅看了一手递增字符串while循环的条件做了修改,最终代码如下:

3、力扣热门题解

        这里是需要大佬指点迷津的地方,还请大佬们不吝指教。

        本题本身考察的是栈,在看过题解后初步理解了部分栈的思路:

        个人感觉代码和栈有了初步认知,而且本地直接运行也能跑通,不理解的是调试的部分:

 

         这里不理解为什么第一次循环stack为空,以下代码和力扣提交记录也能证明栈的思路没有问题:

 

 

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

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

相关文章

Linux Shell 实现一键部署二进制docker+docker_compose

docker 前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 d…

协议篇之以太网UDP协议

协议篇之以太网UDP协议一、写在前面二、TCP/IP协议分层三、UDP协议数据报格式2.1 MAC层/物理层:2.2 IP层/网络层:2.3 UDP层/传输层:2.4 应用层:四、总结四、写在后面一、写在前面 TCP/IP协议是指一个协议簇,可以理解为…

测试包的更新

有的项目有配了ci自动打包更新,开发有权限,就不用测试更新;有的是在阿里云上,测试没有权限,也是开发更新;测试自己的测试服务器,部分开发没有上传下载的权限,所以需要测试来进行更新…

CentOS 8自动化安装MongoDB并安装和实验master-slave集群、副本集群(Replica Set)、分片集群(Sharding)

文章目录CentOS 8自动化安装MongoDB安装Master-Slave集群安装并测试副本集(Replica Set)集群安装副本集(Replica Set)集群实验测试安装并测试分片集群(Sharding)注意实验使用的是ARM架构的CentOS 8 虚拟机 CentOS 8自动化安装MongoDB 首先,更…

分布式事务-概念-实现方式

分布式事务 文章目录分布式事务一、分布式事务相关概念1.分布式事务架构图2.理解本地事务相关概念3.理解分布式事务相关概念1.CAP理论2.刚性事务(CP)与柔性事务(AP)3.基于AP模型衍生下的BASE理论4 .如何从大方向选择分布式事务&am…

MySQL正则表达式 | 事务详解

目录 一、正则表达式 实例操作 二、事务 事务控制语句 MYSQL 事务处理主要有两种方法 SQL测试代码 PHP中使用事务实例 使用保留点 SAVEPOINT 一、正则表达式 MySQL可以通过 LIKE ...% 来进行模糊匹配。 MySQL 同样也支持其他正则表达式的匹配, MySQL中使用…

【嵌入式Linux内核驱动】GPIO子系统

GPIO子系统 总体框架 通用功能 可以设为输出:让它输出高低电平;可以设为输入,读取引脚当前电平;可以用来触发中断 通用属性 Active-High and Active-LowOpen Drain and Open Source 开漏和开源 GPIOLIB向上提供的gpiod相关接…

数据结构与算法之手撕排序算法

前言 为什么要学习排序算法? 根据统计,早起大型机CPU资源的四分之一都花在了数据排序上面。排序算法作为最基础的算法,各种操作系统、编程语言都提供了内置的实现。既然排序实现随处可见,我们为什么还要自己动手实现呢&#xff1…

文章伪原创-文章伪原创工具

伪原创原理 文章伪原创的原理是将一篇原始文章进行修改、改写、调整或者替换一些词句等方式,生成与原始文章类似但又不完全相同的新文章。 文章伪原创的实现需要用到自然语言处理技术和相关的算法。具体的过程包括以下几个步骤: 分析原始文章&#xff…

YML是一种数据存储格式

读取yml配置信息 Value("${province}") private String province; Value("${user.sname}") private String name1; Value("${user1[1].name}") private String name; Value("${server.port}") private int port; server:port: 8099 #…

大数据现在找工作难么

大数据行业工作好找还是难找不是光靠嘴说出来的结合实际,看看市场上的招聘需求和岗位要求就大致知道了 要想符合企业用人规范,学历,工作经验,掌握技能都是非常重要的~ 先来看几个招聘网站的报告数据: Boss直聘发布的…

Linux应用编程(系统信息与系统资源)

在应用程序当中,有时往往需要去获取到一些系统相关的信息,譬如时间、日期、以及其它一些系统相关信息,本章将向大家介绍如何通过 Linux 系统调用或 C 库函数获取系统信息,譬如获取系统时间、日期以及设置系统时间、日期等&#xf…

java拦截器怎么实现

Java拦截器是一种对象拦截器,它可以拦截任何的类、方法和字段。拦截器还可以用于检查类是否已经加载以及对字段的访问权限是否符合规范。下面就让我们来了解一下 java拦截器怎么实现吧。 在 Java中,可以通过重写方法和代码块来实现拦截功能,但…

通俗讲解什么是Socket通讯

Socket通讯原理 1、什么是Socket? Socket,即套接字。就是两台主机之间逻辑连接的端点。(通俗来说:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket)。 Socket是一套…

【python】类和对象 | 一些混淆的知识点再复盘 | 魔术方法(特殊方法)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、魔术方法二、构造方法三、__ getitem __方法四、__ len __方法前言 参考视频:视频 一、魔术方法 首先看一看chatgpt对魔术方法(特…

一图看懂 xlsxwriter 模块:用于创建 Excel .xlsx 文件, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 xlsxwriter 模块:用于创建 Excel .xlsx 文件, 资料整理笔记(大全)摘要模块图类关系图模块全展开【xlsxwriter】统计常量模块1 xlsxwrite…

数据爬虫爬数据时常遇到的问题

第一,可能不能直接通过pyppeteer简单的直接page.querySelectorAll()获取所有元素然后直接 str(await (await element_songer_name.getProperty("title")).jsonValue()) 得到数据值,主要原因可能是#document问题, 所以遇到这个问题…

vue项目配置不同环境打包指令(vue-cli2、vue-cli3项目)

目录 一、vue-cli3项目:1、项目根目录创建环境文件2、 配置打包指令3、打包生成不同的dist文件夹 二、vue-cli2项目1、配置指令2.创建环境文件3、config/index.js中添加 三、遇到的问题1.vue-cli3项目配置打包指令,没有生成css文件--mode test2、vue-cli…

UE DTMqtt 虚幻引擎 Mqtt 客户端插件说明

目录 CreateMqttClient Connect Subscribe UnSubscribe Publish Disconnect BindConnectedDelegate BindConnectionLostDelegate BindMessageDelegate CreateMqttClient 创建一个Mqtt客户端对象 Connect 链接Mqtt服务器Subscribe 订阅消息频道UnSubscribe 取消订阅频道…

【go项目-geecache】动手写分布式缓存 - day3 - HTTP 服务端

收获总结: 了解go函数的可变参数的使用,还有切片展开的方式即…了解了HTTP通信方式,hinder的使用了解了go.mod ,import 和modoule的使用 分布式缓存需要实现点对点的通信,我们可以使用HTTP来实现节点之间的通信&…