编程基础 - 栈的应用 - 括号匹配问题(Bracket Matching)

本文介绍括号匹配的基础概念,包括其在编程中的应用,特别是使用栈来解决括号匹配问题。通过C++代码展示了如何检查括号的合法性,包括头文件和主函数的详细内容。
摘要由CSDN通过智能技术生成

编程基础 - 栈的应用 - 括号匹配问题(Bracket Matching)

返回分类:全部文章 >> 基础知识

返回上级:编程基础 - 栈(Stack)



1 括号匹配简述

所谓括号匹配,可以延伸出许多匹配问题,不限于括号。只要是两个字符就可以设置成匹配关系。

常见的匹配关系:(), [], {}, ##, "", '', &&

我们这里就三种括号(()[]{})的匹配来进行编写。

在对元素依次进栈过程中,过程可以描述为:

  • 遇到左括号,左括号进栈

  • 遇到右括号,对比栈顶是否为对应的左括号

    • 栈顶为空:输入不合法
    • 栈顶为对应的左括号:左括号出栈
    • 栈顶为非对应的左括号:输入不合法
  • 当所有元素都检查完毕时,如果栈内还有元素(左括号数量多余右括号),说明输入依然不合法。


2 括号匹配(C++ Code)

2.1 头文件main.h

#pragma once

#include <string> // 字符串
#include <stack> // 栈
#include <unordered_map> // 字典

2.2 主函数文件main.cpp

首先是检测函数:

// 匹配括号
// params:
//      input:      输入字符串
//      right2Left: 右括号到左括号的映射
bool MatchBracket(string input, unordered_map<char, char> right2Left)
{
   
    if (input.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值