1 条题解
-
1
202509gj16沈齐宸 (沈齐宸) LV 8 @ 2025-10-12 19:20:05
核心代码:match函数(不要直接照抄,理解完再自己写,尊重他人劳动成果,这题我做了二三十分钟)
void match(string s) { stack<int>stk; //定义栈stk for(int i=0;i<=s.size();i++) //逐字检查 { if(s[i]=='(') stk.push(i); //若为左括号则入栈,保存下标以便后续输出 if(s[i]==')'&&stk.empty()) {cout<<"right "<<i;return;} //若遇右括号而栈中无元素,说明没有对应的左括号,应题目要求返回首个失配的右括号下标,直接返回后退出程序(做到此处得40分) if(s[i]==')') stk.pop(); //前面排除了空栈的可能性,这里必有配对的左括号,故弹出栈顶元素视为一组括号配对成功 } if(stk.empty()) {cout<<"ok";return;} //若最终空栈则为全部配对成功,应要求输出ok后退出程序(做到此处得60分) cout<<"left "; //若程序未结束说明有左括号未配对 for(int i=0;i<=stk.size();++i) { cout<<stk.top()<<' '; stk.pop(); //应题目要求,结合样例从后往前输出所有失配左括号的下标,故先输出栈顶元素后再弹出栈顶元素,直到空栈(做到此处100分) } }
- 1
信息
- 难度
- 9
- 分类
- (无)
- 标签
- 递交数
- 9
- 已通过
- 1
- 通过率
- 11%
- 上传者