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

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

题目难度 :普及

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

下面是代码部分

cpp 复制代码
#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;  
}
 
相关推荐
xwz小王子1 小时前
手术机器人登上Science Robotics:2毫米纤细手臂,从3厘米切口完成腰椎神经减压
算法·机器人
黎阳之光2 小时前
视频孪生智护供水生命线:黎阳之光赋能医疗与园区水务高质量升级
运维·物联网·算法·安全·数字孪生
Black蜡笔小新2 小时前
自动化AI算法训练服务器DLTM制造业AI质检工作站助力制造业实现AI智检
人工智能·算法·自动化
嵌入式小能手2 小时前
飞凌嵌入式ElfBoard-进程间的通信之命名管道
linux·服务器·算法
啦哈拉哈3 小时前
Leetcode题解记录-hot100(81-100)
算法·leetcode·职场和发展
csdn_aspnet3 小时前
Java 霍尔分区算法(Hoare‘s Partition Algorithm)
java·开发语言·算法
王老师青少年编程3 小时前
信奥赛C++提高组csp-s之搜索进阶(搜索剪枝核心思想 )
c++·dfs·csp·信奥赛·搜索剪枝·搜索优化
一拳一个呆瓜3 小时前
【STL】使用 C++ 标准库标头
c++·stl
诸葛务农3 小时前
道路行驶条件下电动汽车永磁电机的有效使用寿命及永磁体的失效和回收再利用(下)
java·开发语言·算法
snow@li3 小时前
AI:理解 大数据、算法、算力、电力、生成式AI、token 之间的关系
大数据·人工智能·算法