相关介绍:

 括号分隔符匹配问题是指,判断所输入的字符串表达式中的括号是否匹配的问题,例如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;
}
}

回到目录|·(工)·)

K:括号分隔符匹配问题的更多相关文章

  1. 南阳理工ACM 括号匹配问题,并求出使得括号能够匹配需要新增的最小括号数(括号匹配(二))

    描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起 ...

  2. 利用栈实现字符串中三种括号的匹配问题c++语言实现

    编写一个算法,检查一个程序中的花括号,方括号和圆括号是否配对,若能够全部配对则返回1,否则返回0. Head.h: #ifndef HEAD_H_INCLUDED #define HEAD_H_INC ...

  3. 十 用栈解决LeetCode20题括号的匹配

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAiIAAACWCAYAAADjcONgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjw

  4. 《Java数据结构与算法》笔记-CH4-3用栈实现分隔符匹配

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * 利 ...

  5. OJ——华为编程题目:输入字符串括号是否匹配

    package t0815; /* * 华为编程题目:输入字符串括号是否匹配 * 若都匹配输出为0,否则为1 * 样例输入:Terminal user [name | number (1)] * 样例 ...

  6. 【js数据结构】栈解决括号不匹配问题

    栈可以用来判断一个算术表达式中的括号是否匹配. 思路:读取算术表达式,遇到左括号'{'.'['.'('压入栈,栈的特点是后入先出,所以当遇到右括号'}'.']'.')'的时候,取出栈顶元素,是否满足读 ...

  7. java实现括号的匹配

    括号的匹配 下面的代码用于判断一个串中的括号是否匹配 所谓匹配是指不同类型的括号必须左右呼应,可以相互包含,但不能交叉 例如: -(-[-]-)- 是允许的 -(-[-)-]- 是禁止的 对于 mai ...

  8. 打印n对括号的全部有效组合(左右括号正确匹配)Java实现

    一.问题导出 今天在做算法题目的时候遇到了一道左右括号匹配的问题,问题如下: 二.问题思考 (1)这种要列出全部可能性的题目很容易想到由小到大去发现规律,用递归或者暴力搜索. 首先1的情况,一个括号只 ...

  9. PHP 判断字符串括号是否匹配

    <?php function aa($str) { $temp = array(); for ($i = 0; $i < strlen($str); $i++) { $t = $str[$ ...

随机推荐

  1. [转] 红帽7搭建Zabbix监控

    zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决 ...

  2. iOS --高仿QQ空间页面

    1.首先分析一下qq空间页面的主要2个功能: 1)随着TableView的向上滑动导航栏的颜色渐变,变化过程是从透明变成白色. 2)随着TableView的向下滑动,图片随着offset放大. 2.首 ...

  3. docker微服务部署之:二、搭建文章微服务项目

    docker微服务部署之:一,搭建Eureka微服务项目 一.新增demo_article模块,并编写代码 右键demo_parent->new->Module->Maven,选择M ...

  4. 对称矩阵与压缩存储算法(java实现)

    package 数组和矩阵; public class DuiChenJuZhenYaSuo { int[] arr; int order; //矩阵的阶数 int n; //压缩后一位数组的个数 p ...

  5. ElasticSearch 系列随笔

    1.ElasticSearch 常用设置 2.ElasticSearch 从2.2升级到6.2.4碰到的问题 3.ElasticSearch 因为磁盘空间不够引起的数据插入错误.(message [C ...

  6. InfluxDB概念和基本操作 二

    InfluxDB概念和基本操作   InfluxDB基本概念 数据格式 在 InfluxDB 中,我们可以粗略的将要存入的一条数据看作一个虚拟的 key 和其对应的 value(field value ...

  7. Object中的方法以及对象相等的判定

    看图说话 Object有以下几个方法 getClass() final类型,主要是用来获得运行时的类型 hashCode() 返回该对象的哈希码值,方法是为了提高哈希表(例如 java.util.Ha ...

  8. Java代码度量分析工具:Designite简介

    前言 在Java面向对象课程的学习过程中,我们需要使用度量工具来分析自己程序的代码结构.此类的度量工具有许多,或以插件形式存在于各个IDE中,或以.jar包的形式供用户使用.在这里,笔者向大家简单的介 ...

  9. Altium Designer安装孔周围放置圆形Polygon Pour Cutout

    1.  在Keep-Out层画2个圆, 中间的圆用作安装孔, 外圆做为禁止覆铜层. 这样做的好处是,放好安装孔后, 外面禁止覆铜层也覆不上铜, 防止螺钉与覆铜接触. 2. 选中外圆, Tools -& ...

  10. 使用NHibernate(1)--资料汇总

    NHibernate最新版本是4.0,目前还只是alpha版,没有发布.稳定版本是3.3,项目中用的也是这个版本,所以以后的介绍都是基于这个版本的. 在网上找了一下相关的学习资料,现汇总如下: NHi ...