K:括号分隔符匹配问题
相关介绍:
括号分隔符匹配问题是指,判断所输入的字符串表达式中的括号是否匹配的问题,例如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:括号分隔符匹配问题的更多相关文章
- 南阳理工ACM 括号匹配问题,并求出使得括号能够匹配需要新增的最小括号数(括号匹配(二))
描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起 ...
- 利用栈实现字符串中三种括号的匹配问题c++语言实现
编写一个算法,检查一个程序中的花括号,方括号和圆括号是否配对,若能够全部配对则返回1,否则返回0. Head.h: #ifndef HEAD_H_INCLUDED #define HEAD_H_INC ...
- 十 用栈解决LeetCode20题括号的匹配
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAiIAAACWCAYAAADjcONgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjw
- 《Java数据结构与算法》笔记-CH4-3用栈实现分隔符匹配
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * 利 ...
- OJ——华为编程题目:输入字符串括号是否匹配
package t0815; /* * 华为编程题目:输入字符串括号是否匹配 * 若都匹配输出为0,否则为1 * 样例输入:Terminal user [name | number (1)] * 样例 ...
- 【js数据结构】栈解决括号不匹配问题
栈可以用来判断一个算术表达式中的括号是否匹配. 思路:读取算术表达式,遇到左括号'{'.'['.'('压入栈,栈的特点是后入先出,所以当遇到右括号'}'.']'.')'的时候,取出栈顶元素,是否满足读 ...
- java实现括号的匹配
括号的匹配 下面的代码用于判断一个串中的括号是否匹配 所谓匹配是指不同类型的括号必须左右呼应,可以相互包含,但不能交叉 例如: -(-[-]-)- 是允许的 -(-[-)-]- 是禁止的 对于 mai ...
- 打印n对括号的全部有效组合(左右括号正确匹配)Java实现
一.问题导出 今天在做算法题目的时候遇到了一道左右括号匹配的问题,问题如下: 二.问题思考 (1)这种要列出全部可能性的题目很容易想到由小到大去发现规律,用递归或者暴力搜索. 首先1的情况,一个括号只 ...
- PHP 判断字符串括号是否匹配
<?php function aa($str) { $temp = array(); for ($i = 0; $i < strlen($str); $i++) { $t = $str[$ ...
随机推荐
- 【Map,HashMap,Vector,List】资料汇总
深入学习HashMap实现原理 http://www.cnblogs.com/xwdreamer/archive/2012/06/03/2532832.html 深入学习Vector原理 http:/ ...
- 第一个PSP0级
1.计划: 需求描述: 按照图片要求设计添加新课程界面.(0.5分) 在后台数据库中建立相应的表结构存储课程信息.(0.5分) 实现新课程添加的功能. 要求判断任课教师为王建民.刘立嘉.刘丹.王辉.杨 ...
- Android屏幕尺寸单位转换
最近在看Android群英传这本书,书中有一节涉及到了,屏幕尺寸与单位.觉得以后可能会用到,做个笔记. PPI(pixels per inch) ,又称为DPI,它是由对角线的像素点数除以屏幕的大小得 ...
- kubernetes 与LVM的结合
本文主要介绍k8s与LVM结合使用的场景,在原生的k8s中对于本地存储提供了hostPath与emptyDir两种volme,hostPath是直接将文件存储在本地主机上,存在的问题是无法进行quot ...
- Mac 10.12安装流量监控软件Magican
说明:Magican这家公司已经不维护了,但是软件是单机版的,可以正常使用,但是有些10.12的机器应该是无法看到每个进程的明细,总速度可以正常显示. 下载: (链接: https://pan.bai ...
- c#移位运算符("<<"及">>")详细说明
以前感觉移位运算符自己挺明白的,也许是学的时间长了,后来一看,忘得差不多了.现在参考一些网上的学习资料,将位移运算符整理一下,作为知识点总结,也算个积累.在讲移位运算符之前,先简单补充一下原码与补码的 ...
- javascript004_ECMA5数组新特性
•对于ECMAscript5这个版本的Array新特性补充: –位置方法:indexOf lastIndexOf –迭代方法:every filter forEach some ...
- AngularJs 指令实现选项卡
HTML: <body ng-controller="Aaa"> <my-tab my-id="div1" my-data="dat ...
- maven的安装配置超详细教程【含nexus】
1 下载 下载地址:http://maven.apache.org/download.cgi 界面效果如下: 点击之后进入的apache 软件基金的发布目录,在这里你可以下载apache的所有项目. ...
- WPF中使用TextBlock的Inlines属性来完成复杂的文字内容
参考:http://blog.csdn.net/zhangjiyehandsom/article/details/5498845 1. 需求:要在一行内容中显示不同颜色以及粗细不一的字体, 解决办法: ...