有效的括号——字符串匹配问题
字符串匹配问题
题目描述:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
这道题无疑用栈能够更好的解决问题,但是首先得明白它几个案例
方法:
- 1.遍历当前字符串,如果是左括号就入栈
- 2.当 当前的字符串的字符是右括号,那么和当前栈顶的元素的括号进行批匹配,如果匹配成功,那么直接将栈顶出栈。
- 3.当i下标对应的字符串和栈顶的字符串不能够匹配的时候,那么说明,右括号匹配错位
- 4.当遍历结束后,如果i下标已经没有元素,此时栈内为空,那么字符串就完成匹配
- 4.1如果i下标还有元素,但是栈内为空,说明此时右括号多,此时匹配失败
- 4.2如果i下标没有元素,但是栈内还有元素,说明此时左括号多,此时也匹配失败
代码实现
public static boolean isValid(String s) {Stack<Character> stack = new Stack<>();//首先遍历字符串for (int i = 0; i < s.length(); i++) {//然后遇见左括号“(”,“[”,“{”的时候入栈if(s.charAt(i) == '(' || s.charAt(i) == '[' || s.charAt(i) == '{'){stack.push(s.charAt(i));}else if(stack.empty()){System.out.println("说明右括号多");}else {char ch = stack.peek();if(ch == '('&&s.charAt(i) == ')'||ch == '['&&s.charAt(i) == ']'||ch == '{'&&s.charAt(i) == '}'){System.out.println("字符串匹配成功");stack.pop();}else {System.out.println("匹配失败");return false;}}}if(!stack.empty()){return false;}return true;}
有效的括号——字符串匹配问题相关推荐
- 数据结构与算法 / 字符串匹配 / BF、PK 算法
零.前言 为了下面便于说明,先定义两个名词,分别是主串和模式串.在字符串 A 中查找字符串 B,则 A 为主串,B 为模式串. 假设,主串中字符数量为 L1,模式串的字符数量为 L2 . 一.BF 算 ...
- java中字符串的精确匹配_Java最佳实践–字符串性能和精确字符串匹配
java中字符串的精确匹配 在使用Java编程语言时,我们将继续讨论与建议的实践有关的系列文章,我们将讨论String性能调优. 我们将专注于如何有效地处理字符串创建, 字符串更改和字符串匹配操作. ...
- Java最佳实践–字符串性能和精确字符串匹配
在使用Java编程语言时,我们将继续讨论与建议的实践有关的系列文章,我们将讨论String性能调优. 我们将专注于如何有效地处理字符串创建, 字符串更改和字符串匹配操作. 此外,我们将提供我们自己的用 ...
- 《Python Cookbook 3rd》笔记(2.4):字符串匹配和搜索
字符串匹配和搜索 问题 你想匹配或者搜索特定模式的文本 解法 如果你想匹配的是字面字符串,那么你通常只需要调用基本字符串方法就行,比如 str.find() , str.endswith() , st ...
- VB中字符串匹配的多种方式
这段时间在移植项目的过程中,起初我想判断一个字符串中是否存在某字符(串),直接的使用方法是用instr(start,string1,string2,VB compare),但经过分析在VB中可以只用一 ...
- Python 字符串匹配、搜索及替换
文章目录 字符串匹配.搜索及替换 字符串开头或结尾匹配 str.startswith() 和 str.endswith() 用 Shell 通配符匹配字符串 fnmatch() 和 fnmatchca ...
- 正则表达式,字符串匹配、搜索、替换
str正则表达式,常常缩写为 "regex" 或 "regexp",是帮助程序员匹配.搜索和替换文本的模式. 1.匹配字符 myWant = /code/; / ...
- javascript 学习并梳理正则表达式姿势之字符串匹配( 一)
正则表达式字符串匹配相关 引:<JavaScript 正则表达式迷你书> 读老姚丨洞见生产者的<JavaScript 正则表达式迷你书>全是干货好书,通俗易懂,图文结合 正则是 ...
- linux下匹配字符串,linux上强大的字符串匹配工具详解-grep
1. grep 是什么 grep 是用于匹配输入数据中符合条件的字符串的工具,其匹配过程支持正则表达式,因而匹配能力非常强大. grep 可以从文件或者标准输入设备中读取数据,若不指定任何文件名称,或 ...
最新文章
- Web前端技术分享:学习HTML和CSS的5大理由
- 求圆和椭圆上任意角度的点的坐标
- Elasticsearch 内置分析器Analyzer
- Android 从相冊获取近期拍摄的多张照片(获取相机拍照所存储的照片)
- Spring Cloud 应用篇 之 Spring Cloud Stream(消息驱动)
- 举办了一个如何对外协作的讲座,4人到场
- 软件集成测试工作流程指南
- 计算机驱动程序检测,驱动人生(检测电脑硬件自动安装驱动程序)
- ffmpeg使用指令转码b站上下载的视频
- B1105 Spiral Matrix (画图)
- 论项目管理中当面沟通的重要性
- 怎么注销百度云服务器账号,百度网盘如何注销账号?百度网盘注销账号的方法步骤...
- 信息检索导论要点整理
- 微信小程序的推广思路与方法,详细思路解析
- 【优化】利普希茨连续(Lipschitz continuous)及其应用
- 神奇宝贝/数码宝贝分类器笔记-机器学习-李宏毅2021
- CC2530+ESP8266使用MQTT协议上传阿里云的问题
- 低合金Q355D材料中的机械性能名称
- 使用晨曦账本记录店铺收支
- Among Us 限时免费下载
热门文章
- 4. linux调用文件计算阶乘前5项和_嵌入式Linux系统编程——文件读写访问、属性、描述符、API
- 问题 | kali系统隐藏sshd的banner信息
- vmware vSphere 7 Candidate候选版本
- VMware 大中华区原厂认证讲师(大陆地区)2018 年 8 月 8 日更新
- Linux学习总结(33)——Linux Java启动关闭bash脚本
- 稀疏光流python_【原创】OpenCV-Python系列之稀疏光流(五十九)
- 火车在提速,生活在加速,快节奏的生活让人们逐渐失去了驻足思考的能力,人们好像已经习惯抱团去做某一件事情,完全不顾这件事情到底适合不适合自己,我在想他们总...
- Python之石头剪刀布
- [ZJOI2008]泡泡堂
- [React Native]升级React Native版本