数据结构—栈运用之括号匹配检验(LeetCode 20)

本文介绍了如何使用栈来解决括号匹配检验问题,详细阐述了算法步骤和逻辑,包括初始化空栈、扫描表达式、判断左右括号匹配,并提供了代码实现和运行结果。
摘要由CSDN通过智能技术生成

1.案例分析

  • 检验算法借助一个栈,每当读入一个左括号,则直接入栈,等待相匹配的同类右括号;每当读入一个右括号,若与当前栈顶的左括号类型相同,则二者匹配,将栈顶的左括号出栈,直到表达式扫描完毕在处理过程中,还要考虑括号不匹配出错的情况。

2.算法步骤

  • ①初始化一个空栈S
  • ②设置一标记性变flag,用来标记匹配结果以控制循环及返回结果,1表示正确匹配,0表示错误匹配,fag初值为1。
    ③扫描表达式,依次读入字符ch,如果表达式没有扫描完毕或flag非零,则循环执行以下操作:
    • 若ch是左括号“[”或“(",则将其压入栈;
    • 若ch是右括号“)”,则根据当前栈顶元素的值分情况考虑:若栈非空且栈顶元素是“(”,则正确匹配,否则错误匹配,fag置为0;
    • 若ch是右括号“]”,则根据当前栈顶元素的值分情况考虑:若栈非空且栈顶元素是"[",则正确匹配,否则错误匹配,flag置为0。
  • ④退出循环后,如果栈空且fag值为1,则匹配成功,返回true,否则返回false

3.算法描述

bool Matching() 
{
	stack<char> s;  // 定义一个stack容器
	char ch, temp;
	int flag = 1;     // 标记匹配结果以控制循环及返回结果
	
  • 12
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值