[ABC394D] Colorful Bracket Sequence 题解
题目大意
其实就是括号匹配,经典问题了。不过需要注意,这里只有连续的两个括号才能配对,例如 (<>) 是合法的,但 <(>) 不合法。
思路
和原括号匹配一样,我们使用一个栈,如果当前括号为左括号,则直接入栈,否则将其与栈顶字符进行匹配。最好记得查看栈是否为空。
代码参考
// Problem: D - Colorful Bracket Sequence
// Contest: AtCoder - KAJIMA CORPORATION CONTEST 2025 (AtCoder Beginner Contest 394)
// URL: https://atcoder.jp/contests/abc394/tasks/abc394_d
// Memory Limit: 1024 MB
// Time Limit: 2000 ms
#include<bits/stdc++.h>
#define ll long long
using namespace std;
string s;
stack<char> st;
bool flag=1;
int main(){
cin>>s;
for(int i=0;s[i];++i){
if(s[i]=='('||s[i]=='<'||s[i]=='[') st.push(s[i]);
else {
if(st.empty()){
flag=0;
break;
}
char a=st.top();
if(a=='('&&s[i]!=')' || a=='['&&s[i]!=']' || a=='<'&&s[i]!='>'){
flag=0;
break;
}
st.pop();
}
}
if(!st.empty()) flag=0;
if(flag) printf("Yes");
else printf("No");
return 0;
}

浙公网安备 33010602011771号