知识就是力量,时间就是生命。这篇文章主要讲述2020牛客寒假算法基础集训营4.B——括号序列STL相关的知识,希望能为你提供帮助。
??题目传送门??
题目描述
给出一个仅包含’[’,’]’,’(’,’)’,’’,’六种字符的括号序列,判断其是否合法。
- 空串是一个合法的括号序列
- 如果A, B 都是合法的括号序列,那么AB也是合法的括号序列
- 如果A是合法的括号序列,(A) , [A], A都是合法的括号序列
一行一个字符串S,只包含题目中的六种括号字符
输出描述:
输出为一行"Yes" 或"No"
输入
()[]输出
([])
([)]
【2020牛客寒假算法基础集训营4.B——括号序列STL】Yes备注:
Yes
No
题解
- 使用栈,从左到右处理每一个括号:
- 如果是左括号,那么入栈,然后继续读下一个括号
- 如果是右括号,那么就要看这个右括号和栈顶的括号是否匹配
- 如果匹配,那么弹出栈顶的括号,继续读下一个括号,否则说明不合法
- 最后,如果栈为空,说明此括号序列是合法的。
- 注意特殊样例 ‘(’,输出注意栈是否为空即可
#include < bits/stdc++.h>
using namespace std;
#define
typedef long long ll;
const int INF = 0x7fffffff;
const int maxn = 1e6 + 7;
bool check(char a, int b)
if (a == ( & & b == )) return true;
else if (a == [ & & b == ]) return true;
else if (a ==& & b == )return true;
else return false;
int main()
string s;
while (cin > > s)
stack< char> st;
bool flag = true;
for (int i = 0; i < s.length(); ++i)
if (s[i] == [ || s[i] == ( || s[i] == )
st.push(s[i]);
else
if (st.empty())// 注意特判为空
flag = false;
break;
char t = st.top();
st.pop();
if (!check(t, s[i]))
flag = false;
break;
if (flag & & st.empty())cout < < "Yes" < < endl; // 注意判空
elsecout < < "No" < < endl;
return 0;
推荐阅读
- Docker容器实战十一(数据存储)
- 2020牛客寒假算法基础集训营4.E——最小表达式贪心 & 构造
- 2020牛客寒假算法基础集训营4.A——欧几里得规律
- 2020牛客寒假算法基础集训营3——E.牛牛的随机数数位DP(待补)
- 从我学php领悟如何学习
- C++提高编程|2. STL初识
- 百炼成钢(LeetCode)|图解八道经典指针笔试题
- 80 - 抓取豆瓣音乐排行榜
- 硬件开发笔记: 硬件开发基本流程,制作一个USB转RS232的模块(创建CH340G/MAX232封装库sop-16并关联原理图元器件)