news 2026/9/15 8:55: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/9/14 22:17:39

哈夫曼压缩与关键字检索

https://github.com/nhaok169/huffman-compressor.git 一、设计思路 1、目标: 实现基于标准 ASCII (0–127) 的哈夫曼压缩、解压与在压缩文件中按原始字符串查找功能。 2、总体流程: "encoder"&#xff1a;读取文本文件&#xff0c;统计字符频率&#xff0c;构建哈…

作者头像 李华
网站建设 2026/9/15 6:17:09

Kotaemon Docker 镜像使用指南:快速启动与定制化

Kotaemon Docker 镜像使用指南&#xff1a;快速启动与定制化 在构建智能问答系统时&#xff0c;你是否经历过这样的场景&#xff1f;团队成员的本地环境各不相同&#xff0c;“在我机器上能跑”的尴尬频发&#xff1b;部署到生产环境后&#xff0c;又因依赖冲突导致服务崩溃&a…

作者头像 李华
网站建设 2026/9/14 22:29:26

Kotaemon WebSocket支持:实现实时对话流传输

Kotaemon WebSocket支持&#xff1a;实现实时对话流传输 在企业级智能客服、虚拟助手和知识管理平台日益普及的今天&#xff0c;用户早已不再满足于“提问—等待—接收完整答案”这种机械式的交互模式。他们期待的是更自然、更流畅的沟通体验——就像与真人对话一样&#xff0c…

作者头像 李华
网站建设 2026/9/14 19:59:42

springboot_vue基于SSM的汉服文化交流商城平台设计_26t5m844

目录已开发项目效果实现截图开发技术介绍系统开发工具&#xff1a;核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&…

作者头像 李华
网站建设 2026/9/15 11:22:17

Kotaemon能否提取商业模式要素?创业计划分析工具

Kotaemon能否提取商业模式要素&#xff1f;创业计划分析工具 在创投圈&#xff0c;每天都有成百上千份商业计划书被提交到孵化器、风投机构和企业创新部门。面对这些动辄数十页、充斥着愿景描述与市场预测的文档&#xff0c;如何快速抓住核心——比如目标客户是谁、靠什么赚钱、…

作者头像 李华
网站建设 2026/9/14 1:23:34

Kotaemon房产纠纷解答:买卖租赁常见问题

Kotaemon房产纠纷解答&#xff1a;买卖租赁常见问题 在二手房交易中突然遭遇卖方反悔&#xff0c;或是租客拖欠数月房租却拒不搬离——这类问题几乎每天都在发生。面对复杂的法律条文和漫长的诉讼流程&#xff0c;普通人往往不知所措。而传统客服机器人只能机械回复“请咨询律师…

作者头像 李华