news 2026/4/23 14:57:01

算法---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/4/23 12:49:22

Kotaemon支持Argo CD吗?GitOps持续交付集成

Kotaemon与GitOps&#xff1a;为何它虽未“官宣”却天生适配Argo CD&#xff1f; 在企业级AI系统日益复杂的今天&#xff0c;部署一次智能对话代理&#xff0c;早已不再是“跑通一个Python脚本”那么简单。我们面对的是动态知识库、多轮上下文推理、外部系统调用&#xff0c;以…

作者头像 李华
网站建设 2026/4/23 1:02:49

2025年12月新加坡公司注册代理服务商对比分析

一、行业背景与评测引言随着全球商业环境的不断变化&#xff0c;新加坡作为亚洲重要的金融和商业中心&#xff0c;吸引了大量企业和投资者。2025年&#xff0c;新加坡公司注册代理服务市场需求持续增长&#xff0c;据新加坡会计与企业管制局&#xff08;ACRA&#xff09;数据显…

作者头像 李华
网站建设 2026/4/21 20:29:39

AutoGLM-Phone的介绍

一、AutoGLM-Phone&#xff1a;到底是什么&#xff1f; 简单来说&#xff0c;AutoGLM-Phone 是一个能“看懂”手机屏幕并帮你操作的智能体框架。 核心&#xff1a;它基于一个名为 AutoGLM-Phone-9B 的 9B&#xff08;90亿&#xff09;参数多模态大模型。这个模型经过专门训练&a…

作者头像 李华
网站建设 2026/4/23 14:48:30

适合2026届汽车检测与维修高职生的证书推荐

汽车检测与维修行业对技术能力和专业认证的要求较高&#xff0c;2026届高职生可通过考取相关证书提升就业竞争力。以下推荐分为行业核心证书、数据分析类证书和综合能力证书三类&#xff0c;并附详细说明。行业核心证书证书名称颁发机构适用领域考试内容优势汽车维修工&#xf…

作者头像 李华
网站建设 2026/4/18 21:35:00

32、实用编程工具:拼写检查与索引生成程序详解

实用编程工具:拼写检查与索引生成程序详解 在编程和文档处理过程中,拼写检查和索引生成是非常重要的环节。以下将详细介绍两个实用的程序: spellcheck.awk 和 masterindex 脚本。 1. spellcheck.awk 交互式拼写检查程序 spellcheck.awk 是一个交互式的拼写检查程序…

作者头像 李华
网站建设 2026/4/23 11:32:17

Kotaemon与Slack/DingTalk集成:打造办公场景智能助手

Kotaemon与Slack/DingTalk集成&#xff1a;打造办公场景智能助手 在现代企业里&#xff0c;每天都在上演这样一幕&#xff1a;员工在钉钉群里反复追问“报销流程怎么走”&#xff0c;HR不得不一遍遍复制粘贴制度文档&#xff1b;技术支持团队被“密码重置”这类基础问题淹没&am…

作者头像 李华