字符串匹配问题
题目描述:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 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;}

有效的括号——字符串匹配问题相关推荐

  1. 数据结构与算法 / 字符串匹配 / BF、PK 算法

    零.前言 为了下面便于说明,先定义两个名词,分别是主串和模式串.在字符串 A 中查找字符串 B,则 A 为主串,B 为模式串. 假设,主串中字符数量为 L1,模式串的字符数量为 L2 . 一.BF 算 ...

  2. java中字符串的精确匹配_Java最佳实践–字符串性能和精确字符串匹配

    java中字符串的精确匹配 在使用Java编程语言时,我们将继续讨论与建议的实践有关的系列文章,我们将讨论String性能调优. 我们将专注于如何有效地处理字符串创建, 字符串更改和字符串匹配操作. ...

  3. Java最佳实践–字符串性能和精确字符串匹配

    在使用Java编程语言时,我们将继续讨论与建议的实践有关的系列文章,我们将讨论String性能调优. 我们将专注于如何有效地处理字符串创建, 字符串更改和字符串匹配操作. 此外,我们将提供我们自己的用 ...

  4. 《Python Cookbook 3rd》笔记(2.4):字符串匹配和搜索

    字符串匹配和搜索 问题 你想匹配或者搜索特定模式的文本 解法 如果你想匹配的是字面字符串,那么你通常只需要调用基本字符串方法就行,比如 str.find() , str.endswith() , st ...

  5. VB中字符串匹配的多种方式

    这段时间在移植项目的过程中,起初我想判断一个字符串中是否存在某字符(串),直接的使用方法是用instr(start,string1,string2,VB compare),但经过分析在VB中可以只用一 ...

  6. Python 字符串匹配、搜索及替换

    文章目录 字符串匹配.搜索及替换 字符串开头或结尾匹配 str.startswith() 和 str.endswith() 用 Shell 通配符匹配字符串 fnmatch() 和 fnmatchca ...

  7. 正则表达式,字符串匹配、搜索、替换

    str正则表达式,常常缩写为 "regex" 或 "regexp",是帮助程序员匹配.搜索和替换文本的模式. 1.匹配字符 myWant = /code/; / ...

  8. javascript 学习并梳理正则表达式姿势之字符串匹配( 一)

    正则表达式字符串匹配相关 引:<JavaScript 正则表达式迷你书> 读老姚丨洞见生产者的<JavaScript 正则表达式迷你书>全是干货好书,通俗易懂,图文结合 正则是 ...

  9. linux下匹配字符串,linux上强大的字符串匹配工具详解-grep

    1. grep 是什么 grep 是用于匹配输入数据中符合条件的字符串的工具,其匹配过程支持正则表达式,因而匹配能力非常强大. grep 可以从文件或者标准输入设备中读取数据,若不指定任何文件名称,或 ...

最新文章

  1. Web前端技术分享:学习HTML和CSS的5大理由
  2. 求圆和椭圆上任意角度的点的坐标
  3. Elasticsearch 内置分析器Analyzer
  4. Android 从相冊获取近期拍摄的多张照片(获取相机拍照所存储的照片)
  5. Spring Cloud 应用篇 之 Spring Cloud Stream(消息驱动)
  6. 举办了一个如何对外协作的讲座,4人到场
  7. 软件集成测试工作流程指南
  8. 计算机驱动程序检测,驱动人生(检测电脑硬件自动安装驱动程序)
  9. ffmpeg使用指令转码b站上下载的视频
  10. B1105 Spiral Matrix (画图)
  11. 论项目管理中当面沟通的重要性
  12. 怎么注销百度云服务器账号,百度网盘如何注销账号?百度网盘注销账号的方法步骤...
  13. 信息检索导论要点整理
  14. 微信小程序的推广思路与方法,详细思路解析
  15. 【优化】利普希茨连续(Lipschitz continuous)及其应用
  16. 神奇宝贝/数码宝贝分类器笔记-机器学习-李宏毅2021
  17. CC2530+ESP8266使用MQTT协议上传阿里云的问题
  18. 低合金Q355D材料中的机械性能名称
  19. 使用晨曦账本记录店铺收支
  20. Among Us 限时免费下载

热门文章

  1. 4. linux调用文件计算阶乘前5项和_嵌入式Linux系统编程——文件读写访问、属性、描述符、API
  2. 问题 | kali系统隐藏sshd的banner信息
  3. vmware vSphere 7 Candidate候选版本
  4. VMware 大中华区原厂认证讲师(大陆地区)2018 年 8 月 8 日更新
  5. Linux学习总结(33)——Linux Java启动关闭bash脚本
  6. 稀疏光流python_【原创】OpenCV-Python系列之稀疏光流(五十九)
  7. 火车在提速,生活在加速,快节奏的生活让人们逐渐失去了驻足思考的能力,人们好像已经习惯抱团去做某一件事情,完全不顾这件事情到底适合不适合自己,我在想他们总...
  8. Python之石头剪刀布
  9. [ZJOI2008]泡泡堂
  10. [React Native]升级React Native版本