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

《算法通关指南:数据结构和算法篇 --- 栈相关算法题》--- 1.括号序列

《算法通关指南:数据结构和算法篇 — 栈相关算法题》— 1.括号序列

在这里插入图片描述

🔥小龙报:个人主页
🎬作者简介:C++研发,嵌入式,机器人方向学习者
❄️个人专栏:《C语言》《算法》KelpBar海带Linux智慧屏项目

永远相信美好的事情即将发生

在这里插入图片描述

文章目录

  • 《算法通关指南:数据结构和算法篇 --- 栈相关算法题》--- 1.括号序列
  • 前言
  • 一、括号序列
    • 1.1题目
    • 1.2算法原理
    • 1.3代码
  • 总结与每日励志


前言

本系列讲解算法竞赛的数据结构在算法竞赛中,我们主要关心的其实是时间开销,空间上是基本够用的,因此我们是使用庞大的数组实现的话不多说冲!


一、括号序列

1.1题目

链接:括号序列

在这里插入图片描述

1.2算法原理

考点:模拟
(1)先用栈模拟⼀遍括号匹配的过程,同时用⼀个bool类型的数组st标记哪些位置可以匹配设为true,哪些位置不可以匹配设为0。
(2)模拟结束之后利用st的标记把未匹配位置的括号添上⼀个相应的括号即可。

1.3代码

#include <iostream>
#include <stack>
using namespace std;
const int N = 300;
string s;
stack<int> stk;   // 里面存的是左括号的下标 
bool st[N];   // 标记有没有匹配int main()
{cin >> s;for (int i = 0; i < s.size(); i++){if (s[i] == '(' || s[i] == '[')stk.push(i);else{if (stk.empty())continue;if (s[stk.top()] =='(' && s[i] == ')' || s[stk.top()] == '[' && s[i] == ']'){st[i] = true;st[stk.top()] = true;stk.pop();}}}string ret;for (int i = 0; i < s.size(); i++){char ch = s[i];if (st[i])ret += ch;// 不能匹配就要加括号else  if (ch == '('){ret += ch;ret += ')';}else if (ch == '['){ret += ch;ret += ']';}else if (ch == ')'){ret += '(';ret += ch;}else if (ch == ']'){ret += '[';ret += ch;}}cout << ret << endl;return 0;
}

总结与每日励志

本文介绍了括号序列匹配问题。通过栈模拟括号匹配过程,用bool数组标记匹配位置,最终为未匹配的括号补全相应的括号。代码实现展示了如何处理四种括号情况,确保序列完整。

在这里插入图片描述

http://www.dtcms.com/a/577294.html

相关文章:

  • 网站设计的基本流程是什么苏州高端模板建站
  • Web认证
  • 电子商务网站建设与推广实务江门市智企互联网站建设
  • Access自定义导出HTML报表
  • 【C++ 5 种类型转换深度对比与实践指南】
  • Kubernetes Service 详解:服务暴露与流量管理全指南
  • HTML onclick用法
  • 如何理解HTML语义化
  • 【JVM】Java为啥能跨平台?JDK/JRE/JVM的关系?
  • 数据存储新势力:Doris如何挑战ClickHouse的霸主地位?
  • Vmware中主机ip a没有ip地址
  • 在 VSCode 中:如何主动生成c_cpp_properties.json文件
  • 南京网站设计外包做图片视频的网站有哪些问题
  • 雄县哪里有建设网站的常州企业建站系统
  • Spring事件监听的核心机制是什么?
  • 制造企业的数据目录编写
  • 产品迭代快,如何避免战略失焦?
  • 监听某个端口是什么意思
  • ArkTS跨语言交互
  • 破局AI舆情分析的“最后一公里“:BettaFish多智能体系统深度剖析
  • 基于机载相控阵天线的卫星通信链路预算示例(二):上行链路预算
  • web安全开发,oa系统poc方式检测,基于Python,flask,前端回馈,常见的OApoc。
  • 我的容器管理革命:从命令行地狱到可视化操控的蜕变
  • 网站怎么设置qq网站招商页面怎么做
  • cuda10 cudnn7.5--旧版本
  • 「个人 Gitee 仓库」与「企业 Gitee 仓库」同步的几种常见方式
  • 基于扩展卡尔曼滤波的电池荷电状态估算的MATLAB实现
  • 身份安全纵深防御:内网隐身、动态授权与全链路审计的协同技术方案
  • 怎么找到网站站长ifanr wordpress
  • UE5 C++ 反射 运行时获取类和字符串的信息