判断表达式左右括号是否匹配(栈)
来源:互联网 发布:学校网络机房管理制度 编辑:程序博客网 时间:2024/06/05 16:08
package myProgram;
import java.util.Stack;
/**
*
* @author Administrator
*/
public class MyStackUtil {
/** Creates a new instance of MyStackUtil */
public MyStackUtil() {
}
/**************************************************
*判断表达式左右括号是否匹配
*把表达式中的字符按照顺序读取,碰到左括号就压入stack中,碰到右括号就
*先判断stack是否为空,不为空就把stack中的顶层弹出,看是否和右括号匹配。
*最后根据stack中应为空,并且所有弹出的左括号都匹配
**************************************************/
public static boolean isBalanced(String expression)
{
final char LEFT_NORMAL = '(';
final char RIGHT_NORMAL = ')';
final char LEFT_SQUARE = '[';
final char RIGHT_SQUARE = ']';
final char LEFT_CURLY = '{';
final char RIGHT_CURLY = '}';
boolean failed = true;
Stack<Character> stack = new Stack();
for(int i = 0; i < expression.length(); i++)
{
char tempChar = expression.charAt(i);
switch (tempChar)
{
case LEFT_CURLY:
case LEFT_SQUARE:
case LEFT_NORMAL:
stack.push(expression.charAt(i));
break;
case RIGHT_CURLY:
if(stack.isEmpty() || stack.pop() != LEFT_CURLY)
{
failed = true;
}
break;
case RIGHT_SQUARE:
if(stack.isEmpty() || stack.pop() != LEFT_SQUARE)
{
failed = true;
}
break;
case RIGHT_NORMAL:
if(stack.isEmpty() || stack.pop() != LEFT_NORMAL)
{
failed = true;
}
break;
}
}
if(stack.isEmpty() && failed == true)
{
return true;
}
return false;
}
}
- 判断表达式左右括号是否匹配(栈)
- 如何判断一个表达式中的左右括号是否匹配
- 栈的基本操作及如何判断一个表达式中的左右括号是否匹配
- 用栈判断表达式中的括号是否匹配
- PHP判断表达式中括号是否匹配
- 判断表达式中的括号是否匹配
- 左右括号是否匹配用的栈
- 利用栈判断输入的表达式中的括号是否匹配(假设只含有左、右括号)
- 判断括号是否匹配
- 判断括号是否匹配
- 判断括号是否匹配
- 判断括号是否匹配
- 输入一个表达式,表达式中包括三种括号“()”、“[]”和“{}”,判断该表达式的括号是否匹配。
- Matlab 使用栈判断括号是否匹配
- 基于栈判断括号是否匹配
- 利用栈判断括号是否匹配
- 利用栈判断括号是否匹配
- 栈的应用----判断括号是否匹配
- 什么是BETA,RC,ALPHA版 - 软件命名规范
- 进程、线程调度模型及其在Windows2000中的实现
- 很想找一个朋友……
- Cookie和Session专题
- admin的下载与安装
- 判断表达式左右括号是否匹配(栈)
- 详解SQL注入
- ERP功能测试
- ExtJS中实现嵌套表格
- WINCE快捷方式详解
- Javascript中的函数,数组和对象
- 关于peekmessage和getmessage
- 今天开始我的CSDN博客生活
- 关于scrclr()和system("clr")