当前位置: 首页 > news >正文

上海计算机学会2026年月6月赛C++丙组T2 平衡的判定

平衡的判定

题目描述

给定一个由括号组成的字符序列,该序列只会出现六种字符,分别是 ( 、)、[ 、]、{、} 。

请判断输入的括号序列是否是平衡的。

平衡的定义如下:

  • 空序列是平衡的;
  • 如果某个括号序列 s 是平衡的,那么 [s]、 (s)、{s} 也是平衡的;
  • 如果某两个括号序列 s 与 t 是平衡的,那么 s 拼接 t 后也是平衡的。

不能由上述规则得到的括号序列都是不平衡的。

输入格式

一个字符序列:表示输入的括号序列。

输出格式

如果是平衡的,输出 B,否则,输出 U。

数据范围

设 |S| 表示输入序列的长度,

  • 对于 50% 的数据,1≤∣S∣≤10001 \le |S| \le 10001S1000,保证输入的括号序列只含有 ( 及 );
  • 对于 100% 的数据,1≤n≤10000001 \le n \le 10000001n1000000

样例

样例1

输入:

({})[]

输出:

B

样例2

输入:

{)(}

输出:

U

我的题解

这道题是经典的括号匹配问题,我使用栈这个数据结构来辅助判断。
遍历整个字符串,遇到左括号([{就压入栈中;遇到右括号时,先检查栈是否为空,若为空说明没有左括号可以匹配,直接判定为不平衡;否则检查栈顶的左括号是否与当前右括号匹配,若匹配则弹出栈顶,若不匹配也判定为不平衡。
遍历结束后,如果栈为空,说明所有括号都正确匹配,输出B;若栈非空,则说明有多余的左括号,输出U
时间复杂度 O(n),空间复杂度 O(n),n 为序列长度,本题 n 最大 1000000,栈空间足够。


带注释的源代码

#include<bits/stdc++.h>usingnamespacestd;// 我定义一个字符栈,用来存储等待匹配的左括号stack<char>t;string s;intmain(){cin>>s;// 读入括号序列// 遍历整个字符串for(inti=0;i<s.size();i++){// 如果当前字符是左括号,则将其压入栈中if(s[i]=='('||s[i]=='['||s[i]=='{'){t.push(s[i]);}// 否则当前字符是右括号,先检查栈是否为空elseif(t.empty()){// 栈空说明没有左括号与当前右括号匹配,不平衡,直接输出U并结束cout<<"U";return0;}// 栈非空,则检查栈顶左括号是否与当前右括号匹配else{// 若匹配失败(三种不匹配的情况),则不平衡,输出U并结束if(s[i]==')'&&t.top()!='('||s[i]==']'&&t.top()!='['||s[i]=='}'&&t.top()!='{'){cout<<"U";return0;}else{// 匹配成功,弹出栈顶的左括号t.pop();}}}// 遍历结束后,如果栈为空,说明全部匹配,输出Bif(t.empty()){cout<<"B";}else{// 栈非空,说明有未匹配的左括号,输出Ucout<<"U";}return0;}
http://www.jsqmd.com/news/1091358/

相关文章:

  • 数据集类(Data Set)与数据加载器(Data Loader)
  • Dialogue-SWEBench解读:Coding Agent真正缺的不是代码能力,而是会提问
  • 深度剖析百度 PaddleOCR-VL 0.9B 的文档解析方案:两阶段架构、统一建模与开源实践
  • 韬定律发布满月追踪:华大九天站上EDA价值重估的“C位”
  • 零基础小白C++逆向学习日记 Day.3
  • 硬盘的总线协议与接口(SATA、NVMe、PCIe)
  • 标题:良心推荐!阿贝云免费虚拟主机与云服务器实测体验
  • Ubuntu 20.04 连接 HC-05 蓝牙模块失败
  • 一个真实案例:图片裁剪引发的数据泄露
  • 【Leetcode】合并区间
  • 七到九年级英语梳理
  • 企业开发模式全景图谱:12种方法论的本质、优缺点与选型指南
  • 终极Gmail账号自动生成器:简单快速创建随机邮箱的完整教程
  • AWS VPC 和 ALB 部署规范
  • Adobe GenP 3.0完整教程:免费解锁Adobe CC全系列软件的终极指南
  • CVE-2023-22527漏洞复现:Confluence命令注入与权限校验缺失分析
  • 大模型MoE架构原理与实战:稀疏激活如何实现2%参数高效推理
  • 1234566
  • 高效解决跨平台音乐播放需求:Groove音乐播放器完整实践指南
  • AI Newsletter如何成为工程师的决策操作系统
  • 低功耗单片机MCU芯片主流型号盘点
  • 如何通过开源工具Forza Mods AIO重塑你的极限竞速地平线体验
  • 鸿蒙原生 ArkTS 布局之 padding 内边距:上下左右分别控制的艺术
  • 如何用Nucleus Co-op实现PC游戏分屏:终极免费解决方案
  • 轨迹的蓝图:方程求解与交点计算
  • 探索用 SlideML 让大模型生成 PPT 的实验方法
  • NVMe-snsd性能优化指南:如何调优以获得最佳存储网络性能
  • 众包平台中数据标注任务的质检体系设计——以帮帮星球为例
  • 统计学、数据科学、大数据管理,哪个更适合做数据?2026大学生选方向不迷路
  • Kettle 定时任务实战:从Kitchen/Pan脚本到系统调度全解析