博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
校验左右括号是否匹配,包含数量和左右括号是否匹配
阅读量:7104 次
发布时间:2019-06-28

本文共 1333 字,大约阅读时间需要 4 分钟。

利用栈Stack

栈的几个常用方法
Stack是Vector的一个子类,它实现标准的后进先出堆栈。
Stack 仅仅定义了创建空堆栈的默认构造函数。
Stack包括了由Vector定义的所有方法,同时增加了几种它自己定义的方法,介绍如下:
boolean empty( )-——-如果堆栈是空的,则返回true,当堆栈包含元素时,返回false。
Object peek( )———–返回位于栈顶的元素,但是并不在堆栈中删除它。
Object pop( )————返回位于栈顶的元素,并在进程中删除它。
Object push (Object element )———将element压入堆栈,同时也返回element。
int search(Object element)———在堆栈中搜索element,如果发现了,则返回它相对于栈顶
的偏移量。否则,返回-1。

校验左右括号是否匹配,包含数量和左右括号是否匹配

public class Main {

public static void main(String[] args) {
String str = "(())abc{[]())}" ;
System.out.println(isMatched(str));
}
static boolean isMatched(String str){
//int string_size = brackets.length();
Stack<Character> match = new Stack<Character>();
char symbol ;
boolean is_match = true ;
for(int i = 0 ; i< str.length() ; i++){
//将字符加进字符串数组
symbol = str.charAt(i);
//如果字符是“{”或“[”或“(”就加入栈堆
if(symbol == '{' || symbol == '[' || symbol == '('){
//加入堆栈
match.push(symbol);
}
//如果字符是“}”或“]”或“)”
if(symbol == '}' || symbol == ']' || symbol == ')'){
//如果堆栈是空的
if(match.isEmpty()){
is_match = false ;
break ;
}else{
//如果是“}”并且堆栈里有“{”(peek先别删除)
if((symbol =='}' && match.peek() =='{')
||(symbol ==']' && match.peek() =='[')
||(symbol ==')' && match.peek() =='(')){
//从堆栈里一起删除
match.pop();
}else{
is_match = false ;
break ;
}
}
}
}
//如果堆栈不为空
if(!match.isEmpty()){
is_match = false ;
}
return is_match ;
}
}

转载于:https://blog.51cto.com/13579083/2330058

你可能感兴趣的文章
jsp通过include指令引入html乱码的解决方法
查看>>
解决mysql:The server quit without updating PID file
查看>>
网络实验要求
查看>>
linux7 ntp 开机不自动启动
查看>>
做一次面向对象的体操:将 JSON 字符串转换为嵌套对象的一种方法
查看>>
高可用Redis服务架构分析与搭建
查看>>
论JVM爆炸的几种姿势及自救方法
查看>>
Tomcat远程debug
查看>>
Java的BIO,NIO和AIO的区别于演进
查看>>
核心标签库-------------------二
查看>>
人工智能的就业替代效应
查看>>
生成树理论内容
查看>>
AJPFX总结正则表达式的概述和简单使用
查看>>
git命令
查看>>
httpclient post 发送Json数据
查看>>
git 将branch转为master
查看>>
在 CentOS 上安装和配置 OpenStack Nova
查看>>
mysql的innodb中事务日志ib_logfile
查看>>
Java概述
查看>>
Launch和Shut Off操作详解 - 每天5分钟玩转 OpenStack(30)
查看>>