1 条题解
-
0
#include<bits/stdc++.h> using namespace std; int main() { // [1] s-存储输入的括号字符串(仅包含()[]四种字符,长度≤100) string s; cin>>s; // [2] v-栈,用于存储未匹配的左括号('('或'[') stack<char> v; // [3] 遍历括号字符串的每个字符 for(int i=0;i<s.size();i++){ // [4] 情况1:当前字符是左括号'(',压入栈中 if(s[i]=='('){ v.push(s[i]); // [5] 情况2:当前字符是左括号'[',压入栈中 }else if(s[i]=='['){ v.push(s[i]); // [6] 情况3:当前字符是右括号(')'或']') }else{ // [7] 检查栈是否为空(若为空,说明右括号无匹配的左括号,直接输出no并终止程序) if(v.empty()){ cout<<"no"; return 0; } // [8] 若当前是']'且栈顶是'[',说明匹配,弹出栈顶 if(s[i]==']' && v.top()=='['){ v.pop(); // [9] 若当前是')'且栈顶是'(',说明匹配,弹出栈顶 }else if(s[i]==')' && v.top()=='('){ v.pop(); // [10] 否则括号不匹配(如')'对应'[',或']'对应'('),输出no并终止程序 }else{ cout<<"no"; return 0; } } } // [11] 遍历结束后,检查栈是否为空(栈空表示所有左括号都匹配了右括号,否则仍有未匹配的左括号) if(v.empty()){ cout<<"yes"; }else{ cout<<"no"; } return 0; }
- 1
信息
- ID
- 1267
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者