LeetCode 678. 有效的括号字符串

传送门:https://leetcode-cn.com/problems/valid-parenthesis-string

题目描述:
给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则:

1、 任何左括号 ( 必须有相应的右括号 )。
2、任何右括号 ) 必须有相应的左括号 ( 。
3、左括号 ( 必须在对应的右括号之前 )。
4、* 可以被视为单个右括号 ) ,或单个左括号 ( ,或一个空字符串。
5、一个空字符串也被视为有效字符串。

示例 1:输入: "()"
输出: True
示例 2:输入: "(*)"
输出: True
示例 3:输入: "(*))"
输出: True注意:
字符串大小将在 [1,100] 范围内。

思路:

定义两个栈 left, star 分别储存左括号和星号的位置
开始遍历字符串,遇到左括号和星号的时候分别入栈,当遍历到右括号的时候,首先查看left是否为空,若不为空,left栈顶元素出栈;若为空,查看star是否为空,若不为空,star栈顶元素出栈(此时星号被当作是左括号),若为空,直接返回False。

遍历结束,检查left是否为空,若不为空,检查star是否为空,为空说明此时已经没有星号与左括号匹配,直接返回False。如果left的栈顶元素大于star的栈顶元素,说明星号在左括号的左边,不满足题目要求,直接返回False。否则,left栈顶元素出栈,star栈顶元素出栈。直到left为空,返回True。

class Solution:def checkValidString(self, s: str) -> bool:if s=="*":return Trueelse:left, star=[], []for i in range(len(s)):if s[i]=='(': left.append(i)elif s[i]=='*':star.append(i)elif s[i]==')':if left: left.pop()elif star:star.pop()else:return Falsewhile left:if len(star) == 0: return False elif left[-1] > star[-1]: return False else:left.pop()star.pop()return True

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

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

相关文章

汪卫华院士:无序中找有序 复杂中寻规律

来源:中国科学报原文出处:《中国科学报》 (2021-10-11 第4版 综合)作者:汪卫华(作者系中国科学院院士、松山湖材料实验室主任)冰河时代为什么会周期性重复出现?是否有关于混沌和湍流系统更一般的数学描述&a…

霍金 | 哥德尔和物理学的终结

来源:爱思想转自:人机与认知实验室 作者:史蒂芬霍金 英国剑桥大学著名物理学家,现代最伟大的物理学家之一译者:凌高【感谢陈禹老师:"冯诺依曼说过,没有明确的概念,量得分析是毫…

BUAA_OO_第二单元作业总结

程序设计策略 第一次作业 第一次作业实现的是FAFS式傻瓜调度电梯,由于是第一次接触多线程,难度不是很大。在我的设计里,我借鉴了生产者消费者模式,设计了一个输入线程和一个电梯线程,控制器的设计使用了单例模式&#…

linux的常用操作——静态库

1.静态库的制作 1.1静态库的命名 \qquad静态库一律使用lib打头,静态库名为:lib静态库的名字.a。比如:libmylibrary.a,这里面lib和.a是必须要有的。使用nm命令可以查看静态库。 nm 静态库名1.2静态库的制作步骤 \qquad第一步&…

蓝桥杯 回文日期

模拟 n int(input())def check(x):m int(x[:2])d int(x[2:4])x int(x)if 1<m<12:if m 2:if (x%40 and x%100!0) or x%4000:if d<29:return Trueelse:return Falseelse: if d<28:return Trueelse:return Falseif m in [1,3,5,7,8,10,12]:if d<31:return Tr…

因果推断研究获2021诺贝尔经济学奖

来源&#xff1a;集智俱乐部 北京时间2021 年 10 月 11 日 17 时许&#xff0c;2021 年诺贝尔经济学奖&#xff0c;授予了三位经济学家——David Card因为对“对劳动经济学的实证研究贡献”而获得一半奖金&#xff0c;Joshua D. Angrist和Guido W. Imbens因“对因果关系分析的方…

Leetcode 82. Remove Duplicates from Sorted List II

利用一个虚拟头节点,和维护一个前置节点. # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val x # self.next Noneclass Solution:def deleteDuplicates(self, head: ListNode) -> ListNode:if not head o…

【计算机网络复习】1.1.1 概念、组成、功能和分类

概念、组成、功能和分类二、功能三、组成四、分类计算机网络&#xff1a;是一个将分散的、具有独立功能的计算机系统&#xff0c;通过通信设备与线路连接起来&#xff0c;由功能完善的软件实现资源共享和信息传递的系统。 计算机网络是互连的、自治的计算机集合。 互连 — 互…

linux的常用操作——共享库

1.共享库的命名规则 \qquad共享库&#xff0c;即动态库。库名&#xff1a; lib库名.so 2.共享库的制作 2.1生成与位置无关的.o文件 gcc -fpic -c filename.c -I 头文件路径2.2生成共享库 gcc -shared -o 共享库名 要打包的.o文件 -I 头文件路径2.3生成可执行文件 gcc file…

因果表征学习最新综述:连接因果科学和机器学习的桥梁

来源&#xff1a;集智俱乐部作者&#xff1a;蔡心宇审校&#xff1a;龚鹤扬、陆超超编辑&#xff1a;邓一雪论文题目&#xff1a;Towards Causal Representation Learning论文地址&#xff1a;https://arxiv.org/abs/2102.11107这篇名为Towards Causal Representation Learning…

【计算机网络复习】1.1.2 标准化工作及相关组织

标准化工作及相关组织一、标准化工作二、标准化工作的相关组织一、标准化工作 标准 法定标准&#xff1a;由权威机构指定的正式的、合法的标准&#xff08;如OSI&#xff09;事实标准&#xff1a;某些公司的产品在竞争中占据了主流&#xff0c;时间长了&#xff0c;这些产品中…

推荐几个练习听力不错的国外网站

http://www.uptoten.com/ 是美国针对学前教育&#xff08;0到10岁&#xff09;的听力网站&#xff0c;主题非常丰富&#xff0c;拥有大量英文歌曲、卡通片、绘画、游戏等栏目&#xff0c;启发儿童在艺术、健康、语言、社会、科学多元思维能力&#xff0c;在好玩又有趣的氛围下&…

linux的常用操作——程序调试gdb

1.如何在linux下调试程序&#xff1f; \qquad在进行程序编译时&#xff0c;如果需要调试&#xff0c;那么需要加入调试指令。 gcc filename.c -o 可执行文件名 -g\qquad对程序进行调试 gdb 可执行文件名2.调试的基础操作 \qquad在gdb的界面下的操作&#xff1a;查看 l #默认…

这种记忆技术在弯曲时更好?

A new kind of flexible phase change memory is tested while bent around a 4-millimeter-diameter rod. A.I. KHAN AND A. DAUS来源&#xff1a;IEEE电气电子工程师新的相变存储器需要更少的能量&#xff0c;部分原因是它是建立在塑料上的&#xff1f;要想让粘贴式显示器、…

【计算机网络复习】1.1.3 速率相关的性能指标

速率相关的性能指标一、速率二、带宽三、吞吐量一、速率 速率即数据率或称数据传输率或比特率。 比特 &#xff1a; 1/0 位 连接在计算机网络上的主机在数字信道上传送数据位数的速率。 单位是b/s&#xff0c;kb/s&#xff0c;Mb/s&#xff0c;Gb/s&#xff0c;Tb/s 速率 …

linux的常用操作——makefile

1.makefile是什么&#xff1f; \qquadmakefile是linux下的一个代码管理工具。 2.makefile文件的命名 \qquadmakefile的命名&#xff1a;首字母大写即&#xff1a;Makefile&#xff1b;或者全部小写&#xff1a;makefile。 3.makefile文件的规则 \qquad规则三要素&#xff1a;…

接口与内部类

1.什么是接口(B) 接口是一种引用数据类型&#xff0c;用interface声明&#xff1b;当出现interface便可判断为接口。 形式&#xff1a;【修饰符】 interface 接口名称(public interface Pepar{ }) 接口可声明属性&#xff0c;且属性都默认为static final 1 public interface Pa…

深度学习为何泛化的那么好?秘密或许隐藏在内核机中

来源&#xff1a;AI科技评论编译&#xff1a;杏花编辑 &#xff1a;青暮在机器学习领域&#xff0c;人工神经网络逐年扩大规模&#xff0c;并取得了巨大成功&#xff0c;但同时它也制造了一个概念性难题。当一个名为 AlexNet网络在2012年赢得年度图像识别比赛时&#xff0c;大约…

linux的常用操作——压缩和解压缩

1.gzip和bzip2 \qquadgzip和bzip2的处理解压和压缩的功能并不强大&#xff0c;一是&#xff1a;不能处理打包压缩&#xff1b;二是&#xff1a;gzip压缩不保留原文件&#xff0c;bzip2 -k 要压缩的文件可以保留原文件&#xff1b;三是&#xff1a;只能压缩文件&#xff0c;不能…

【计算机网络复习】1.1.4 时延、时延带宽积、RRT和利用率

时延、时延带宽积、RRT和利用率一、时延二、时延带宽积三、往返时延RTT一、时延 传输时延&#xff08;发送时延&#xff09;&#xff1a;数据从结点发送到链路上的时间 传输时延 数据长度/网络带宽&#xff0c;由网络带宽、数据长度决定 传播时延&#xff1a;信号从链路的一端…