相关介绍:

 括号分隔符匹配问题是指,判断所输入的字符串表达式中的括号是否匹配的问题,例如1+(12+2)*(1+2)便是一个括号分隔符匹配的表达式,而(12+1)*4+(12/2]就是一个括号分隔符不匹配的表达式

 判断一个表达式括号分隔符是否匹配,其思路如下:依次读取该表达式中的相关字符,如果为数字或者运算符则继续读取下一个字符,当为左括号的时候,将其压入栈中,当为右括号的时候,弹出栈顶元素,查看是否是右括号所匹配的左括号类型,如果不是则该表达式不是括号匹配的,否则,重复以上步骤,直至表达式中的每个字符遍历完成,当遍历完成的时候,若栈中元素不为空,则是括号不匹配的,否则是括号匹配的。

相关代码如下:

package queueandstack;import java.util.Scanner;/*** 该类用于实现对括号的匹配问题的操作* 用于判断输入的括号是否匹配的问题* @author 学徒**/public class Match
{public void matchesSymbol() {boolean match=false;Stack<String> stack=new Stack<String>();System.out.print("请输入一系列括号:");String inputString=null;while(true){inputString=getInputString();if(inputString==null||deleteBlank(inputString).equals("")){System.out.print("请输入一系列括号:");continue;}else{break;}}//去除空字符inputString=deleteBlank(inputString);//当括号成对出现的时候if(inputString.length()%2==0){match=true;for(int i=0;i<inputString.length();i++){//当为左括号时,将其压入栈中,否则将从栈中弹出if(String.valueOf(inputString.charAt(i)).matches("[((\\[{【]")){stack.push(String.valueOf(inputString.charAt(i)));}else{if(!stack.isEmpty()){String value=stack.pop();}else{match=false;break;}}}}if(!match||!stack.isEmpty()){System.out.println("括号不匹配");}else{System.out.println("括号匹配成功");}}//该方法用于获得输入的字符串private  String getInputString(){Scanner in =new Scanner(System.in);String str=null;if(in.hasNextLine()){str=in.nextLine();}return str;}//该方法用于对输入的字符串进行去除空字符的处理private String deleteBlank(String inputString){inputString=inputString.replaceAll(" ", "");return inputString;}
}

回到目录|·(工)·)

转载于:https://www.cnblogs.com/MyStringIsNotNull/p/8206830.html

K:括号分隔符匹配问题相关推荐

  1. 第2关:利用栈判断字符串括号是否匹配

    #ifndef stack__h #define stack__h#include <stdio.h> #include <stdlib.h>typedef char T; / ...

  2. python 判断括号是否匹配_使用Python实现一个栈判断括号是否平衡

    栈(Stack)在计算机领域是一个被广泛应用的集合,栈是线性集合,访问都严格地限制在一段,叫做顶(top). 举个例子,栈就想一摞洗干净的盘子,你每次取一个新盘子,都是放在这一摞盘子的最上头,当你往里 ...

  3. LeetCode Valid Parentheses(判断括号是否匹配)

    题意:给出(,[,{,),],}括号组成的字符串, 判断括号是否匹配 思路:用栈结构判断 1.如果是(,[,{,将其入栈 2.如果遇到),],},看栈是否为空.栈顶元素是否对应为(,[,{ 3.将字符 ...

  4. 数据结构算法——判断表达式中的括号是否匹配

    元旦三天假,闲着没事干,就想着复习一下学数据结构时的那些算法吧.本来是想用C语言来写的,无奈啊,三四年没用C了,基本上忘光光,还是用C#来写吧,而且.Net基类库中已经有了栈.队列等的实现,直接拿来用 ...

  5. 判断字符串中的括号是否匹配——c和c++实现

    判断字符串中的括号是否匹配 递归实现:  先检搜一对匹配的括号,再对里面的内容进行匹配,匹配完后再继续往下匹配--  代码如下: #include <stdio.h> #include & ...

  6. java小编程----括号是否匹配

    错误示例::: 当 String s = "...(...[....]....{...}...)...(.[..)..";     应输出3 package com.henu.ji ...

  7. python中用函数设计栈的括号匹配问题_数据结构和算法(Python版):利用栈(Stack)实现括号的匹配问题...

    算法 数据结构 数据结构和算法(Python版):利用栈(Stack)实现括号的匹配问题 在平时写程序当中,我们会经常遇到程序当中括号的匹配问题,也就是在程序当中左括号的数量和右括号的数量必须相等.如 ...

  8. 如何判定括号是否匹配

    如何判定括号是否匹配 package p1;import java.util.Stack;public class Demo07 {public static boolean isGoodBracke ...

  9. 数据结构上机实践第五周项目3 - 括号的匹配

    括号的匹配 本次实践将用到顺序栈的算法库,点击此处参考. 本次实践要求: 假设表达式中允许三种括号:圆括号.方括号和大括号.编写一个算法,判断表达式中的各种左括号是否与右括号匹配.  例如,输入2+( ...

最新文章

  1. 《游戏程序设计模式》 1.4 - 原型模式
  2. word经常用到的技巧
  3. 常见的原生javascript DOM操作
  4. ADO.NET 基础学习笔记1
  5. Docker中运行命令时提示:Cannot connect to the Docker daemony...以及设置docker开机启动
  6. TCP三次握手及其背后的缺陷
  7. 罗永浩吐槽卖小米、苹果被骂,卖华为也被骂,李楠:警惕键盘侠
  8. 三言两语话敏捷(2) - 持续集成
  9. ThinkPHP文件上传类的使用
  10. Delphi应用程序的调试(十)调试器选项
  11. Java笔记(1)黑马刘意_Java入门_2019_idea版
  12. 【2018黑龙江省赛】UPC-7222 Overflow(模拟物理水体积)
  13. 我的世界网易绘梦师国服 物品材料介绍
  14. 游戏开发中常用的算法1(20道题一篇文章)
  15. Linux常用命令学习-base64
  16. LSF_安装(UNIX or Linux)
  17. faker和劫的图片_这张图影响了LOL玩家多年,劫的新皮肤首次摘下面具
  18. Mysql和 ClickHouse计算时间函数的差值的区别(dateDiff和TIMESTAMPDIFF)
  19. 小心!手机这样充电被1秒窃取信息!
  20. mysql的in和exist的区别

热门文章

  1. Freeline体验
  2. 手机怎么裁剪视频?分享三个裁剪方法给你
  3. 商标取名,你学会了吗?
  4. CH1-模型训练优化
  5. 翻转课堂教学模式研究
  6. 电子合同实现招采文件电子化签署,高效采购
  7. echarts初次渲染不出来
  8. VMware 虚拟机硬盘镜像共享
  9. Web API系列(三):添加接口详细说明及测试
  10. 数据重复(唯一索引的设置)