问题 B: 简单的括号匹配

括号匹配 题目内容 括号匹配检验问题。假设字符串中只有三种括号类型,如"()","{}","[]",括号任意嵌套。判断输入的表达式中所含有的括号是否匹配。例如: 表达式 “(…{…{}…[]…})” 匹配。 而表达式 “(…{…[…}…{…]…})” 不匹配。 思路 栈的基本应用。序列中只有左括号入栈,对应右括号出栈。若不对应,或者其他情况就算不匹配。 C++代码实现 #include <iostre... 阅读详情

先描述一下题目:

给定一个括号字符串,请回答其中有多少对括号是匹配的,并且将未匹配的剩余字符按原顺序输出
(),[],{} 各视为1对匹配的括号; 
([]) 视为2对匹配的括号 ;         
)(, [} 均视为不匹配的括号.

输入:

多组数据输入
每组数据,输入一行,包含一个字符串S(1≤|S|≤105) 仅包含(){}[]

输出:

对于每一组数据输出两行
第一行输出一个数代表有多少对括号是匹配的
第二行输出剩余未匹配的字符串(可以是空白的)

样例:

(){}
([]){[}]
样例输出:

2

2
{[}]
主要本题我是想对栈底元素进行处理,所以传统的STL不够方便,拿数组模拟较为方便

#include<iostream>
#include<stack>
#include<cstring>
#include<vector>
using namespace std;//本题的核心思想是拿数组模拟队列,但在使用队列的时候要将它看作可以对栈底处理的栈(立起来)
int main()
{
   string a;  
	while(cin>>a)
	{
		int numble=0;
		int cnt=a.size();
		int hh=0;  //栈底
		int tt=-1; //栈顶
		string result=""; //要输出的字符串
		char stk[1000010]={0}; //建立栈
		for(int i=0;i<cnt;i++)//开始遍历字符串
		{
			if(a[i]=='['||a[i]=='('||a[i]=='{') 
			{
				stk[++tt]=a[i];	//进栈
			}
			else if(a[i]==')'&&stk[tt]=='(') //像消消乐一样,满足栈顶和待处理字符匹配就出栈
			{
					tt--;  //出栈  
					numble++;//匹配上了,结果数累加
			}	
			else if(a[i]==']'&&stk[tt]=='[')
			{
	             tt--;
	             numble++;
			}
			else if(a[i]=='}'&&stk[tt]=='{')
		    {
			    tt--;
		        numble++; 
	    	}
	    	else if(a[i]=='['||a[i]=='('||a[i]=='{')
	    	{
				result+=stk[hh];
				hh++;
			}
			else   stk[++tt]=a[i];//没匹配上,就先入栈	
        }
        while(hh<=tt)//将栈底部的元素添在result之后
        {
			result+=stk[hh];
			hh++;   //栈底元素出栈,
		}
     	cout<<numble<<endl;
	 	cout<<result<<endl;
	}
	return 0;	
}

IGV新手必看:5分钟搞定ChIP-seq/DAP-seq/ATAC-seq数据可视化(附常见报错解决方案) 本文为IGV新手提供了一份快速上手的实战指南,详细讲解了如何高效完成ChIP-seq、DAP-seq、ATAC-seq等数据的可视化。内容涵盖软件安装、基因组导入、文件格式转换与优化,并重点剖析了“导入后一片空白”等常见报错的根本原因与解决方案,帮助用户在5分钟内避开雷区,生成可用于发表的IGV专业图谱。 阅读详情

相关推荐

恒玄BES2700ZP开发实战:从零搭建嵌入式音频系统

本文详细介绍了恒玄BES2700ZP蓝牙音频SoC的开发实战,从环境搭建、SDK架构解析到蓝牙音频、AI语音集成及低功耗优化。重点探讨了如何利用其多核架构实现高性能音频处理和LE Audio支持,为开发者提供从零构建嵌入式音频系统的完整指南。

o1p2q3r的博客 918

数据结构题解(2)

给定一个括号字符串,请回答其中有多少对括号是匹配的,并且将未匹配的剩余字符按原顺序输出。(),[],{} 各视为1对匹配的括号;([]) 视为2对匹配的括号;)(, [} 均视为不匹配的括号。多组数据输入每组数据,输入一行,包含一个字符串S(1≤|S|≤105) 仅包含 ( ) [ ] { }输出格式对于每一组数据输出两行第一行输出一个数代表有多少对括号是匹配的第二行输出剩余未匹配的字符串(可以是空白的)22{[}]

weixin_74042627的博客 645

【Bug已解决】codex file edit fails / Write operation denied — CodeX CLI 文件编辑失败解决方案

CodeX CLI 编辑文件时报写入被拒绝,本质是沙箱限制或权限不足。文中给出配置允许目录、修复权限、Git stash 管理冲突等完整方案。

一键难忘的博客 4300

HDU 1870 愚人节的礼物(栈的简单应用)

愚人节的礼物

Sometimes__的专栏 603

2026华为OD机试 新系统真题题库目录|机考题库 + 算法考点详解

华为OD机试 新系统真题题库目录|机考题库 + 算法考点详解华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2026e卷,od机试,2026E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2026华为od,如何备战华为od,华为od算法,华为od手撕代码,华为OD机试2024年最新题库,

KJ.JK 4698

Linux系统中u-boot启动流程分析(详解)

代码部分,具体如下;

嵌入式技术开发 1992

DS堆栈--括号匹配

问题 C: DS堆栈--括号匹配 时间限制: 1 Sec 内存限制: 128 MB 提交: 396 解决: 343 [提交][状态][讨论版] 题目描述 处理表达式过程中需要对括号匹配进行检验,括号匹配包括三种: “(”和“)”,“[”和“]”,“{”和“}”。例如表达式中包含括号如下: ( ) [ ( ) ( [ ] ) ] { } 1 2 3 4 5 6 7 8 9 10 11 12 从上例可以看出第1和第2个括号匹配,第3和第10个括号匹配, 4和5匹配,6和9匹配,7和8匹配,11和12匹配。

夜阑優琿 499

复旦微实现串口在线升级BOOT.BIN

将该 demo 生成的 app(升级用)和 fsbl、最简化 bit 文件(可选)打包成 BOOT.BIN,作为 golden image 烧写在 qspi flash 偏移 0 地址开始的位置,其中最简化 bit 文件为在线升级功能提供必要的物理通道(如果不需要,可以不打包该文件),golden image 一旦发布基本不需要进行升级,由该 golden image 负责和上位机进行通信交互,完成业务 app、业务 bit 文件、uboot 以及操作系统 image 等文件在线升级,在qspi flash

wangjie36的博客 3174

C语言用栈实现括号匹配问题

例如:{}[()]、{[()]}、()[]{}这种大中小括号成对出现(位置不限)则为括号匹配,反之则不匹配,如{()[ 接下来看一下实现方式 栈的定义以及相关操作 //栈的定义 typedef struct{ char elem[stack_size]; int top; }seqStack; //栈的初始化 void initStack(seqStack *s){ s->top=-...

kiddingstreet的博客 1万+

使用Google Earth Engine(GEE)的Python API,您可以将经纬度坐标转换为Landsat影像的路径/行号

使用Google Earth Engine(GEE)的Python API,您可以将经纬度坐标转换为Landsat影像的路径/行号。在这个示例中,我们选择了一个位于加利福尼亚州旧金山市附近的点,其经度为-122.084,纬度为37.421998。首先,我们需要导入必要的库和模块。接下来,我们定义一个函数,该函数将接收经度和纬度作为输入,并返回对应的Landsat路径/行号。最后,我们提取路径和行号的值,并将它们作为结果返回。现在,我们可以使用这个函数来获取特定点的Landsat路径/行号。

VwajAlgorithm的博客 348

【LAMMPS学习】五、LAMMPS命令(8) Pair_style 势

所有LAMMPS pair_style命令如下表所示。有些样式有加速版本。这由括号中的附加字母表示:g = GPU, i = INTEL, k = KOKKOS, o = OPENMP, t = OPT。

荷塘阅色 3016

括号匹配问题

括号匹配

jyyyyx的算法之旅 2584

电商平台系统需求规格说明书(示例)

​​电商系统​​:指本文件所描述的集商品展示、销售、支付、物流跟踪、用户管理等功能于一体的综合性在线购物平台。​​API​​:应用程序编程接口(Application Programming Interface),用于实现系统各模块之间或与外部系统之间的数据交互和功能调用。

跟佟格湾一起学习计算机知识吧~ 1262

C语言括号匹配问题

主要思路: /*------------------------------------------------------- 功能:可进行括号匹配,输入可包括{}, [], (), 其他任意字符 输入示例: 3 {{{{{{{[[[[[1314]]]]]}}}}}}} {{{{{[[[(())]}}}}} ((({{{{{[[521]]}}}}}))) 输出示例: Yes No Yes Auth...

田野麦子 1万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

括号匹配问题的总结

括号匹配问题有若干种,这里分析其中一种括号里有数字有字符,然后求的最终结果的问题。 给出两道例题,Leetcode224和Leetcode394。 Leetcode224 题目描述 实现一个基本的计算器来计算一个简单的字符串表达式的值。 字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 。 示例 输入: "(1+(4+5+2)-3)+(6+8)" 输出: ...

我的心里只有代码 1123

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Java 括号匹配问题

这两天正在学习抽象数据结构。想起了当年学习C++时,遇到的括号匹配的问题,反正一直都没有解决它,都怪自己太懒。今天用java简单的实现了,算是一种补充吧。 public class StackDemo { public static void main(String[] args) { String str = "{{{a+b}}}(())"; char [] c = s

Cynthia9023的专栏 2357

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

数据结构之栈的应用:括号匹配问题

栈的应用括号匹配问题:原理:代码实现: 括号匹配问题: 原理: 1、括号匹配成功的情况:栈为空 2、括号匹配失败的情况:   a、下一个为右括号但是和栈顶左括号不匹配   b、下一个是右括号但栈以空   c、所有的空号都匹配完成后栈不空    代码实现: 1、方法一 bool isValid(char * s){ char *stack = (char*)malloc(strlen(s)...

千寻瀑 1826

用栈解决括号匹配问题

数据结构中,栈的一个简单应用便是解决括号匹配的问题,我们的目的是输入一个字符串,输出匹配的括号和没有匹配的括号。 例如: 我们输入“(a+b)*(d+c)(” 这样一个字符串 输出结果为: 代码如下: 首先建立栈的类 #include<iostream> #include<string.h> using namespace std; const int stackIncr...

asdapple117的博客 1023

(C语言)括号匹配问题

题目描述 现在,有一行括号序列,里面只包含"(",")","[","]"四种符号,请你检查这行括号是否配对。 如:  []是匹配的  ([])[]是匹配的  ((]是不匹配的  ([)]是不匹配的  输入 第一行输入一个数N(0 输出 每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No 样例输入 3 [

YiMo_Fan的博客 1万+

栈解决括号匹配问题

题目:、假设一个表达式中可以包含三种括号:小括号,中括号,大括号,且这三种括号可以任意次序嵌套使用, 如:“3*[5+4]*{[3+5]*[40-2*(5-3)]}” ,编写判断表达式括号是否匹配的程序。表达式为字符串。 解题思路:解决括号匹配问题我们要考虑的是优先级,大家学过数学的都知道要想解决这类算式我们要做的就是去括号,去括号不能随便去,要先去除最后写的一组括号。意思就是如果大括号“{}”里面还有小括号“()”我们要先去小括号再去大括号。意思就是后写入的一组括号要先被处理。而先写入的括号最后处理。这

Rocketcp3的博客 1万+

问题 B: Problem E 括号匹配

题目描述 请写一个程序,判断给定表达式中的括号是否匹配,表达式中的合法括号为”(“, “)”, “[", "]“, “{“, ”}”,这三个括号可以按照任意的次序嵌套使用。 输入 有多个表达式,输入数据的第一行是表达式的数目,每个表达式占一行。 输出 对每个表达式,若其中的括号是匹配的,则输出”yes”,否则输出”no”。 样例输入 4 [(d+f)*{}] [(2+3)) ()}...

sinat_33269610的博客 476

括号匹配(栈和队列)

欢迎访问https://blog.youkuaiyun.com/lxt_Lucia~~宇宙第一小仙女\(^o^)/~~萌量爆表求带飞=≡Σ((( つ^o^)つ~dalao们点个关注呗~~先来个最简单的~Problem 1 is coming~~~~Description现在有一种只包括左右小括号(“(”和“)”)和空格(” “)的字符串序列,请你判断括号是否匹配,如果匹配就输出Yes,不匹配输出No。Inpu...

lxt_Lucia的博客 1929
上一篇: 24点问题递归解法
下一篇: 有序线性表的有序合并
Allen_cats
博客等级 码龄4年 48粉丝 18原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值