堆栈应用——括号匹配问题

本文探讨如何使用栈解决括号匹配问题,包括圆括号、方括号和花括号的匹配。通过分析括号匹配的四种情况,提出利用栈的后进先出特性进行匹配的方法。文章提到,无论是顺序栈还是链式堆栈,都可以实现正确的括号匹配检查,并提供了相关代码实现。
摘要由CSDN通过智能技术生成

假设一个算术表达式中包含圆括号()、方括号[]和花括号{}三类括号,要求判断表达式中括号是否正确匹配配对。

分析:括号匹配符号后到的括号要最先被匹配,所以满足栈“后进先出”的特点。

括号匹配共有四种情况:(1)左右括号配对次序不正确,即存在类似“(]”这种情况;(2)右括号多于左括号;(3)左括号多于右括号;(4)匹配正确。

综上:我们可以存储表达式的字符串并按顺序扫描,进行匹配。顺序栈和链式堆栈都可以;

下面看代码:(不再构造栈类,上篇有)

package StackAndQueue;
/**
* @author sun
* 创建时间:2017年3月30日下午2:52:31
*/
public class BraceMatch {
	//遍历字符数组并利用进栈出栈匹配括号
	static void expIsCorrect(String[] exp,int n)throws Exception{
		SeqStack myStack = new SeqStack();
		//LinStack myStack = new LinStack(); //也可以用链式堆栈
		for(int i=0;i<n;i++){//如果是左括号就入栈
			if((exp[i].equals(new String("(")))
					|| (exp[i].equals(new String("[")))
					|| (exp[i].equals(new String("{"))))
				myStack.push(exp[i]);
			//如果是右括号࿰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值