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

洛谷P1241 括号序列(c嘎嘎)

题目链接:P1241 括号序列 - 洛谷 | 计算机科学教育新生态

题目难度普及

解题思路:我们可以开一个栈,然后从左到右遍历,每当遇到左括号就将左括号位置压入栈,遇到右括号就取出栈顶然后与当前遍历到的左括号进行匹配匹配成功,弹出栈并进行标记匹配成功的左右括号的位置,最后进行输出,标记过的直接输出未标记的输出匹配的两个括号。

下面是代码部分

#include<bits/stdc++.h>  // 万能头文件
using namespace std;
typedef long long ll;
const int N = 1010;     
stack<int>st;
string s;
int mark[N];
 
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    
    cin >> s;//读入字符串 
    for(int i=0; i< s.length(); i++)
    {
    	if(s[i] == '(' || s[i] == '[') st.push(i);//左括号压入栈 
    	if(!st.empty())
    	{
    		int j = st.top();//取出栈顶 
    		if((s[i] == ')' && s[j] == '(')|| (s[i] == ']' && s[j] == '['))//判断是否匹配匹配则进行标记 
    		{
    			mark[i] = mark[j] = 1;//匹配成功标记位置 
    			st.pop();//弹出栈继续判断 
			}
		}
	}
	for(int i = 0; i<s.length(); i++)
	{
		if(mark[i] == 1) cout<<s[i];//标记过直接输出 
		else
		{
			if(s[i] == '(' || s[i] == ')') cout<<"()";
			else cout<<"[]";
		}
    }    
    
	
    return 0;  
}
 


http://www.kler.cn/a/422092.html

相关文章:

  • 实验三:Mybatis-动态 SQL
  • 三步入门Log4J 的使用
  • Unity AssetBundles(AB包)
  • 【C++】深入优化计算题目分析与实现
  • Rust循环引用与多线程并发
  • Kibana server is not ready yet
  • 无人机倾斜摄影测绘三维建模技术详解
  • Linux-虚拟环境
  • Qt Qtablewidget 标题 QHeaderView 增加可选框 QcheckBox
  • 【Vue3】【Naive UI】<NAutoComplete>标签
  • 【Flink】Flink Checkpoint 流程解析
  • Vue 入门级教程四:深入 Vue 组件与路由
  • 【pytorch】pytorch的缓存策略——计算机分层理论的另一大例证
  • 实数与复数频谱掩蔽在音频分离中的应用
  • WPF_1
  • Scala身份证号if else if else查询省份
  • 每日一题:golang并发 mutex、context
  • 【论文阅读】Adversarial gradient-based meta learning with metric-based test
  • 什么是 Socket?
  • 005 MATLAB符号微积分
  • 数仓项目常见问题解答
  • Narya.ai正在寻找iOS工程师!#Mixlab内推
  • linux下环境变量的使用
  • 基于Java Springboot时间管理微信小程序
  • NLP 相关知识的构成
  • MR30分布式 IO 模块助力印刷设备,开启收益新篇