8586 括号匹配检验

### 思路
1. **初始化栈**:创建一个空栈用于存储左括号。
2. **遍历字符串**:逐个字符检查:
- 如果是左括号(`(` 或 `[`),则入栈。
- 如果是右括号(`)` 或 `]`),则检查栈是否为空:
- 如果栈为空,说明缺少左括号,输出错误信息。
- 如果栈不为空,弹出栈顶元素并检查是否匹配:
- 如果匹配,继续检查下一个字符。
- 如果不匹配,输出错误信息。
3. **检查栈是否为空**:遍历结束后,如果栈为空,说明括号匹配;否则,说明缺少右括号。
### 伪代码
```
function InitStack(S):
allocate memory for S.base of size STACK_INIT_SIZE
S.top = S.base
S.stacksize = STACK_INIT_SIZE
return OK
function StackEmpty(S):
return S.top == S.base
function Push(S, e):
if S.top - S.base >= S.stacksize:
reallocate memory for S.base with size S.stacksize + STACKINCREMENT
S.top = S.base + S.stacksize
S.stacksize += STACKINCREMENT
S.top = e
S.top += 1
return OK
function Pop(S, e):
if S.top == S.base:
return ERROR
S.top -= 1
e = S.top
return OK
function check():
initialize stack s
read input string ch
p = ch
while *p:
if *p is '(' or '[':
Push(s, *p)
else if *p is ')' or ']':
if StackEmpty(s):
print "lack of left parenthesis"
exit(ERROR)
Pop(s, e)
if (*p is ')' and e is not '(') or (*p is ']' and e is not '['):
print "isn't matched pairs"
exit(ERROR)
p += 1
if StackEmpty(s):
print "matching"
else:
print "lack of right parenthesis"
```
### C++代码
#include <iostream>
#include <cstdlib>
using namespace std;typedef char SElemType;
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;
#define STACK_INIT_SIZE 10
#define STACKINCREMENT 2struct SqStack {SElemType *base;SElemType *top;int stacksize;
};Status InitStack(SqStack &S) {S.base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));if (!S.base) exit(ERROR);S.top = S.base;S.stacksize = STACK_INIT_SIZE;return OK;
}Status StackEmpty(SqStack S) {return S.top == S.base ? TRUE : FALSE;
}Status Push(SqStack &S, SElemType e) {if (S.top - S.base >= S.stacksize) {S.base = (SElemType *)realloc(S.base, (S.stacksize + STACKINCREMENT) * sizeof(SElemType));if (!S.base) exit(ERROR);S.top = S.base + S.stacksize;S.stacksize += STACKINCREMENT;}*S.top++ = e;return OK;
}Status Pop(SqStack &S, SElemType &e) {if (S.top == S.base) return ERROR;e = *--S.top;return OK;
}void check() {SqStack s;SElemType ch[80], *p, e;if (InitStack(s)) {cin >> ch;p = ch;while (*p) {switch (*p) {case '(':case '[':Push(s, *p);p++;break;case ')':case ']':if (!StackEmpty(s)) {Pop(s, e);if ((*p == ')' && e != '(') || (*p == ']' && e != '[')) {cout << "isn't matched pairs" << endl;exit(ERROR);} else {p++;break;}} else {cout << "lack of left parenthesis" << endl;exit(ERROR);}default:p++;}}if (StackEmpty(s))cout << "matching" << endl;elsecout << "lack of right parenthesis" << endl;}
}int main() {check();return 0;
}
相关文章:
8586 括号匹配检验
### 思路 1. **初始化栈**:创建一个空栈用于存储左括号。 2. **遍历字符串**:逐个字符检查: - 如果是左括号(( 或 [),则入栈。 - 如果是右括号() 或 ]),则检查栈是…...
案例精选 | 聚铭助力河北省某市公安局筑牢网络安全防护屏障
近年来,各级公安机关积极响应信息化发展趋势,致力于提升公安工作的效能与核心战斗力。河北省某市公安局作为主管全市公安工作的市政府部门,承担着打击违法犯罪、维护社会稳定的重任。随着信息化建设的推进,局内系统数量、种类及数…...
VBS学习2:问题解决(文件中含义中文运行报错或者中文乱码)
文件中含义中文运行报错或者中文乱码 问题 msgbox"fdsfdsf大蘇打撒旦dsfsdffsdfsd发斯蒂芬斯蒂芬"解决 文件编码修改成GB2312...
首次揭秘行业内幕!范罗士、希喂、有哈、小米、安德迈宠物空气净化器实测分析
前段时间有个朋友来我家做客,看到我家三只长毛猫,家里还是干干净净的,他家一只短毛猫都猫毛满天飞。也是很细心,留意到我家猫拉完粑粑后,我立刻就去把宠物空气净化器开上了,他一点味都没闻到。 回家后立刻…...
1267:【例9.11】01背包问题(信奥一本通)
题目链接:信息学奥赛一本通(C版)在线评测系统 (ssoier.cn) 今天刚看完卡尔大哥讲解的01背包,今天手敲了一遍,还是很多问题,只能说自己还是刷题太少或者说是没理解到位。 代码如下 # include <iostrea…...
信息化时代下的高标准农田灌区:变革与机遇并存
在信息化时代的浪潮中,高标准农田灌区的建设与管理正经历着前所未有的变革,这既是一个挑战重重的历程,也孕育着无限的发展机遇。随着物联网、大数据、云计算以及人工智能等先进技术的飞速发展与融合应用,传统的农田灌溉模式正在被…...
【系统架构设计师-2013年真题】案例分析-答案及详解
更多内容请见: 备考系统架构设计师-核心总结索引 文章目录 【材料1】问题1问题2【材料2】问题1问题2问题3问题4【材料3】问题1问题2问题3【材料4】问题1问题2问题3【材料5】问题1问题2问题3【材料1】 阅读以下关于企业应用系统集成架构设计的说明,在答题纸上回答问题1和问题…...
git merge如何忽略部分路径
参考文章: Git - Ignore files during merge How to make git ignore a directory while merging 在进行git merge时,想忽略部分路径的回合。 如:将develop分支merge回master,但是忽略/path/to/folder路径 操作: gi…...
spring boot导入多个配置文件
1、简介 Spring Boot从2.4.x版本开始支持了导入文件的方式来加载配置参数,与spring.config.additional-location不同的是不用提前设置而且支持导入的文件类型相对来说要丰富很多。 我们只需要在application.properties/application.yml配置文件中通过spring.config.…...
硬件工程师笔试面试——无线通讯模块
目录 15、无线通讯模块 15.1 基础 无线通讯模块实物图 15.1.1 概念 15.1.2 常见的无线通讯模块及其特点 15.1.3 无线通讯模块参数 15.1.4 无线通讯模块工作原理 15.2 相关问题 15.2.1 如何根据项目需求选择合适的无线通讯模块? 15.2.2 无线通讯模块的安全性如何,如…...
开源PHP免费家谱应用Webtrees简介
1. 介绍 Webtrees是一个开源的在线家谱管理系统,支持 GEDCOM 格式,允许用户协作管理家谱数据。它是免费的,并且功能强大。Webtrees有大量活跃用户参与的交流社区,在全世界约有6800个服务器。这是一个服务器应用,可以多…...
kafka消息发送几种方式
同步发送 or 异步发送 消息发送根据是否需要处理发送的结果分为同步发送、异步发送。 同步发送:等待发送结果返回,这种方式是可靠的,因为异常能及时处理,但同步发送需要阻塞等待一条消息发送完才处理下一条,吞吐量差。…...
K1计划100%收购 MariaDB; TDSQL成为腾讯云核心战略产品; Oracle@AWS/Google/Azure发布
重要更新 1. 腾讯全球数字生态大会与9月5日-6日举行,发布“5T”战略,包括TDSQL、TencentOS、TCE(专有云 )、TBDS(大数据)、TI (人工智能开发平台)等 ( [2] ) ; 并正式向原子开源基金…...
Kyutai 开源对话模型 Moshi;李飞飞空间智能公司已筹集超过 2.3 亿美元丨 RTE 开发者日报
开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。 我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、…...
Go语言的io输入输出流
Go语言的输入输出流不如其他语言那么直观,由于是通过实现接口方法的隐式继承所以比较抽象,今天具体介绍一下go语言的输入输出流。 go语言输入输出在io库中,使用Reader接口,如下: type Reader interface {Read(p []by…...
表单里面input的type属性值有哪些?
在HTML的表单(<form>)中,<input>元素是一个常用的元素,用于收集用户输入。每个<input>元素都包含一个type属性,用于定义输入字段的类型。以下是<input>元素中常见的type属性值: 1…...
【Redis】之Geo
概述 Geo就是Geolocation的简写形式,代表地理坐标。在Redis中,构造了能够存储地址坐标信息的一种数据结构,帮助我们根据经纬度来检索数据。 命令行操作方法 GEOADD 可以用来添加一个或者多个地理坐标。 GEODIST 返回一个key中两个成员之…...
常用的k8s容器网络模式有哪些?
常用的k8s容器网络模式包括Bridge模式、Host模式、Overlay模式、Flannel模式、CNI(ContainerNetworkInterface)模式。K8s的容器网络模式多种多样,每种模式都有其特点和适用场景。Bridge模式适用于简单的容器通信场景;Host模式适用…...
4位整数的数位和
输入一个4位数的整数,求其各数位上的数字之和。 输入格式: 输入在一行中给出1个4位的正整数n。 输出格式: 在一行中输出n的各数位上的数字之和。 输入样例: 1234输出样例: 10 代码如下: #include<stdio.h> int main() {int n;int a,b,c,d;scanf(&…...
XHTML学习
XHTML学习 1.XHTML 简介2.XHTML - 元素标准3.XHTML - 属性标准 1.XHTML 简介 XHTML是一个严格遵循 XML语法规则的 HTML 标准。它是 HTML4 的一种重构版本,结合了 HTML 的灵活性和 XML 的严格性,如今XHTML已经得到了所有主流浏览器的支持 与 HTML 相比最…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...
