算法思想:
做一个空栈,读入字符。
若字符是左运算符,则入栈
若字符时右运算符,当栈为空时报错
否则,将栈顶元素弹出,若不匹配,则报错
最后,字符读完后,栈非空,则报错
代码:
Stack类
package cn.edu.tju.stack;
public class Stack {
public static void push(char[] arr, int topOfStack, char x){
arr[topOfStack] = x;
}
public static char pop(char[] arr, int topOfStack){
char x = arr[topOfStack];
return x;
}
}
客户端Client类
package cn.edu.tju.stack;
public class Client {
public static void main(String[] args){
char[] input = {'[', '(', ')', ']', '{', '(', '}', ')'};
char[] stack = new char[input.length];
int topOfStack = -1;
boolean result = true;
for(int i = 0; i < input.length; i ++){
switch(input[i]){
case '[':
case '{':
case '(':
Stack.push(stack, ++topOfStack, input[i]);
break;
default:
if(topOfStack == -1){
result = false;
break;
}else{
char top = Stack.pop(stack, topOfStack--);
//if(input[i] != top){
if((input[i] == ')' && top != '(') || (input[i] == ']' && top != '[') || (input[i] == '}' && top != '{')){
result = false;
}
break;
}
}
}
if(topOfStack > -1){
System.out.println("false");
}else if(result){
System.out.println("true");
}else if(!result){
System.out.println("false");
}
}
}
分享到:
相关推荐
自己做的,能用栈实现括号匹配,程序很简单实用
主要介绍了Java栈的应用之括号匹配算法,结合实例形式分析了Java使用栈实现括号匹配算法的相关原理、操作技巧与注意事项,需要的朋友可以参考下
Java 栈Stack源码实现 stack检测括号匹配算法 java源码
本文实例讲述了Python实现求解括号匹配问题的方法。分享给大家供大家参考,具体如下: 这个在本科学习数据结构的时候已经接触很多了,主流的思想是借助栈的压入、弹出来进行匹配,至于python的话可以使用列表来完成...
此次资源为清华大学计算机教程-数据结构(c语言版)第三章栈的全部算法实现,包括:数制转化、括号匹配、行编程程序、迷宫求解、表达式求职和汉诺塔问题求解6个算法,实现语言为JAVA,全部表明算法详细注解,希望对各位...
栈和队列2-1 栈的基本实现2-2 栈的另一个应用:括号匹配2-3 数组队列Java2-4 循环队列Java第三章 最基础的动态数据结构:链表章节Java源码3-1 链表的基本实现Java3-2 使用链表实现栈Java3-3 带有尾指针的链表:使用...
Java 栈Stack源码实现 stack检测括号匹配算法 java源码
但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...
设计一个算法判别一个算术表达式的圆括号是否正确配对
中序遍历给出了递归、使用栈的非递归以及不使用栈的非递归实现) :wrench: :wrench:图的两种遍历方式 这种方式最终会生成关于图的一棵广度优先树, 得到源点s到其余点的最短路径(边数最少) 这种方式最终会生成关于图的...
实例184 使用泛型实现栈结构 234 实例185 自定义泛型化数组类 235 实例186 泛型方法与数据查询 236 实例187 泛型化方法与最小值 238 实例188 泛型化接口与最大值 239 实例189 使用通配符增强泛型 240 实例190 泛型化...
应用:系统栈、中断、括号匹配、逆波兰表达式求值 数组栈 ArrayStack push:均摊O(1) pop:均摊O(1) getTop:O(1) getSize:O(1) isEmpty:O(1) 链栈 LinkedStack 链栈 push:O(1) pop:O(1) getTop:O(1) getSize:...
中序遍历给出了递归、使用栈的非递归以及不使用栈的非递归实现) :wrench: :wrench:图的两种遍历方式 这种方式最终会生成关于图的一棵广度优先树, 得到源点s到其余点的最短路径(边数最少) 这种方式最终会生成关于图的...
6.2.1 检查括号匹配 197 6.2.2 识别语言中的字符串 199 6.3 栈在代数表达式中的应用 200 6.3.1 计算后缀表达式 201 6.3.2 中缀表达式与后缀表达式的等价转换 202 6.4 使用栈查找航班图 205 6.5 栈和递归的...
栈的另一个应用:括号匹配 3-4 关于Leetcode的更多说明 3-5 数组队列 3-6 循环队列 3-7 循环队列的实现 3-8 数组队列和循环队列的比较 补充代码1: 不浪费一个空间的循环队列 补充代码2: 没有size成员变量的循环队列 ...
栈的另一个应用:括号匹配 3-4 关于Leetcode的更多说明 3-5 数组队列 3-6 循环队列 3-7 循环队列的实现 3-8 数组队列和循环队列的比较 补充代码1: 没有size成员变量的循环队列 [整理中,敬请期待] 第四章 最基础的...