news 2026/7/7 18:51:42

算法---LeetCode 678. 有效的括号字符串

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法---LeetCode 678. 有效的括号字符串

1. 题目

原题链接

给你一个只包含三种字符的字符串,支持的字符类型分别是 ‘(’、‘)’ 和 ‘*’。请你检验这个字符串是否为有效字符串,如果是 有效 字符串返回 true 。

有效 字符串符合如下规则:

任何左括号 ‘(’ 必须有相应的右括号 ‘)’。
任何右括号 ‘)’ 必须有相应的左括号 ‘(’ 。
左括号 ‘(’ 必须在对应的右括号之前 ‘)’。
‘*’ 可以被视为单个右括号 ‘)’ ,或单个左括号 ‘(’ ,或一个空字符串 “”。

示例 1:

输入:s = “()”
输出:true
示例 2:

输入:s = “(*)”
输出:true
示例 3:

输入:s = “(*))”
输出:true

提示:

1 <= s.length <= 100
s[i] 为 ‘(’、‘)’ 或 ‘*’

2. 题解

2.1 解法1: 两个栈

两个栈记录目前为止不能匹配的字符,也就是*和(,每次出现右括号我们就应该去两个栈匹配可以匹配的左括号。

而*可以作为任何括号,也可以作为空字符串,所以我们应该优先用左括号匹配,所以我们出栈的策略如下:

  1. 遇到左括号,直接进栈,记录括号的位置。
  2. 遇到星号,直接进栈,记录星号的位置。
  3. 遇到右括号:
    a: 左括号栈里有元素,直接出栈。
    b: 左括号栈里无元素,*栈里有元素,直接出栈。无元素的话就已经匹配失败了。

如果遍历完数组的话,我们可能会发现左括号栈里还有结余元素。如果是20题的情况,已经失败了。但现在我们可能还有一些星号可以作为右括号用,所以我们进行下面的匹配操作:

对左括号栈逐一出栈,然后去看此时星号栈的栈顶,如果栈顶元素的位置大于左括号栈顶元素的位置,说明星号在括号的右侧,可以匹配。否则不可。

classSolution{publicbooleancheckValidString(Strings){Deque<Integer>star=newLinkedList<>();Deque<Integer>left=newLinkedList<>();for(inti=0;i<s.length();i++){charc=s.charAt(i);if(c=='('){left.offerLast(i);}elseif(c=='*'){star.offerLast(i);}elseif(!left.isEmpty()){left.pollLast();}elseif(!star.isEmpty()){star.pollLast();}else{returnfalse;}}while(!left.isEmpty()&&!star.isEmpty()){if(left.pollLast()>star.pollLast()){returnfalse;}}returnleft.isEmpty();}}

参考:
【微扰理论】肯定是栈呀)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 7:35:21

五轴加工如何赋能多行业创新应用

桌面五轴加工技术正在重塑多个行业的原型开发和小批量生产模式。不同于传统大型工业设备的高门槛&#xff0c;紧凑型桌面五轴加工中心以其灵活性、易用性和相对低廉的成本&#xff0c;为教育、科研、医疗、文创等多个领域带来了的制造能力。教育领域的实践教学革命在教育行业&a…

作者头像 李华
网站建设 2026/7/7 18:15:38

Kotaemon如何避免信息冗余?答案去重机制说明

Kotaemon如何避免信息冗余&#xff1f;答案去重机制说明 在构建智能问答系统的实践中&#xff0c;一个看似简单却极易被忽视的问题正悄然影响着用户体验&#xff1a;为什么同一个问题&#xff0c;系统给出的回答总是“换汤不换药”地重复&#xff1f; 尤其是在企业级知识库场景…

作者头像 李华
网站建设 2026/7/7 10:16:29

AI多智能体如何优化价值投资的跨境投资策略

AI多智能体如何优化价值投资的跨境投资策略 关键词:AI多智能体、价值投资、跨境投资策略、优化、金融科技 摘要:本文聚焦于AI多智能体在优化价值投资的跨境投资策略中的应用。首先介绍了相关背景,包括研究目的、预期读者等内容。接着阐述了核心概念,分析了AI多智能体与价值…

作者头像 李华
网站建设 2026/7/7 10:26:40

Kotaemon如何防止无限追问?会话终止条件设定

Kotaemon如何防止无限追问&#xff1f;会话终止条件设定 在构建智能对话系统时&#xff0c;我们常常面临一个看似简单却极具破坏性的问题&#xff1a;用户会不会“问到天荒地老”&#xff1f; 设想这样一个场景——某银行客服机器人正在为用户查询账单。前几轮一切正常&#xf…

作者头像 李华
网站建设 2026/7/7 18:48:44

Kotaemon与Hugging Face生态整合现状与前景展望

Kotaemon与Hugging Face生态整合现状与前景展望 在企业智能化浪潮中&#xff0c;一个日益凸显的挑战是&#xff1a;如何让大语言模型&#xff08;LLM&#xff09;真正“懂业务”&#xff1f;许多团队尝试直接调用GPT或Llama生成回答&#xff0c;结果却常常陷入“听起来很专业、…

作者头像 李华