java版括号匹配检测
做一个空栈,读入字符直到结尾.如果读入一个封闭符号,空栈时报错;非空时弹出栈尾字符,如果不匹配则报错.否则读入为开放字符,压入栈中.最后如果栈空,返回true.
其中用到MyStack类,详情请见
public class KuohaoJiancha {
private char [] item = {'(',')','[',']','{','}'};
private MyStack stack = new MyStack();
private char[] str;
private int currentNum;
public KuohaoJiancha(String str){
this.str = str.toCharArray();;
}
public boolean display(){
for(int i = 0; i < str.length; i++){
currentNum = charNumber(str[i]);
if(misByStackIsEmpty(str[i]))
return false;
if(currentNum % 2 == 1) {
if (currentNum - charNumber((char) stack.pop()) != 1)
return false;
}
else stack.push(str[i]);
}
return true;
}
private int charNumber(char c){
int i = 0;
for(; i < 6; i++){
if(c == item[i])
break;
}
return i;
}
private boolean misByStackIsEmpty(char c){//如果读入一个封闭符号,空栈时报错
if(stack.isEmpty())
if(currentNum % 2 == 1)
return true;
return false;
}
}
java版括号匹配检测的更多相关文章
- 栈的应用:表达式括号匹配检测(C)
问题说明: 假设数学表达式中允许包含两种括号:圆括号"()"和方括号"[]",嵌套顺序任意. 正确的嵌套模式:( [ ] ( ) ).[ ( [ ] [ ] ) ...
- STL版 括号匹配(感觉不如之前自己用数组模拟的跑的快)
数据结构实验之栈四:括号匹配 Time Limit: 1000MS Memory limit: 65536K 题目描述 给你一串字符,不超过50个字符,可能包括括号.数字.字母.标点符号.空格,你的 ...
- C++括号匹配检测(用栈)
输入一串括号,包括圆括号和方括号,()[],判断是否匹配,即([]())或[([][])]为匹配的正确的格式,[(])或([())为不匹配的格式. #include<iostream> # ...
- Java版人脸检测详解上篇:运行环境的Docker镜像(CentOS+JDK+OpenCV)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Codeforces 918C The Monster(括号匹配+思维)
题目链接:http://codeforces.com/contest/918/problem/C 题目大意:给你一串字符串,其中有'('.')'.'?'三种字符'?'可以当成'('或者')'来用,问该 ...
- java:数据结构(二)栈的应用(括号匹配)
一.什么是括号匹配: 括号匹配就是利用计算机辨别表达式里面的括号是否书写成功 例如: {()((a)) }这就是一个正确 (()() 这就是一个错误的 二.括号匹配的算法: 众所周知,括号分为花括 ...
- 栈应用之 括号匹配问题(Python 版)
栈应用之 括号匹配问题(Python 版) 检查括号是否闭合 循序扫描被检查正文(一个字符)里的一个个字符 检查中跳过无关字符(所有非括号字符都与当前处理无关) 遇到开括号将其压入栈 遇到闭括号时弹出 ...
- 括号匹配性检测C语言实现
#include <stdio.h> #define SIMPLE_KUOHAO "(()1231qeqw)(@#$)" #define COMPLEX_KUOHAO ...
- P1739_表达式括号匹配(JAVA语言)
思路:刚开始想用stack,遇到'('就push,遇到')'就pop,后来发现其实我们只需要用到栈里'('的个数,所以我们用一个变量统计'('的个数就好啦~ 题目描述 假设一个表达式有英文字母(小写) ...
随机推荐
- view import symbols
nm -D [file]|grep -w U or objdump -T [file]|grep "*UND*"
- mysql查询优化技巧
索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存)等等.这里记录的优化技巧更适合开发人员,都是从网络上搜集和整理的,主要是查询语句上的优化,其他层面上 ...
- phpStudy速度慢的解决办法
1.修改mysql数据库链接地址为ip地址127.0.0.1. 2.使用最新版本,这个坑了我好久时间.
- win32程序调试OutputDebugString 类似printf格式化输出
有没有win32编程因为打印变量调试程序而头疼呢.方法二的函数完全类似printf.非常完美.方法一:不带参数输出如printf("hello world"); OutputDeb ...
- Django学习(三) Django模型创建以及操作
在Django中可以建立自己的模型Model,这里对应Java里的实体类,跟数据库表是对应的.其中用到了django.db模块中的models.如下图所示: mysite/news/models.py ...
- setTimeout setInterval 带参数的问题
转载http://www.jb51.net/article/36233.htm 在JS中无论是setTimeout还是setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要 ...
- C语言--基本运算符
一.算术运算符 1. 加法运算符 + * 除了可以进行加法运算外,还可以表示正号:+521 2.减法运算符 — * 除了可以进行减法运算外,还可以表示负号:—741 3.乘法运算法符 * * 请注意符 ...
- MYSQL 插入二进制数的 2 种方法。
方法 1.insert into TableName set column =''; 方法 2.insert into TableName .... values(.....); ---------- ...
- 李维作答 《insideVCL》——李维实在很勤奋,而且勇于突破,从不以旧的内容充数
(编者按)<Inside VCL(VCL核心架构剖析)>一书出版以来,众多热心读者给李维先生.博文视点公司.CSDN写来信件,有更多朋友在各个论坛上发表关于该书的言论.读者们不但盛赞该书, ...
- 怎样查看修改sqlserver数据库的编码格式
原文地址:http://zhidao.baidu.com/question/107168202.html SELECT COLLATIONPROPERTY('Chinese_PRC_Stroke_CI ...