C37火车进栈
2024-08-28 16:22:00
发布于:江苏
8阅读
0回复
0点赞
36homework2
stack
火车调度
程序的输入问题
表达式括号匹配
homeWork2
/*
假设表达式中允许包含两种括号:
圆括号和方括号,其嵌套的顺序随意,
如([ ]())或[([ ][ ])]等为正确的匹配,
[( ])或([ ]( )或 ( ( ) ) )均为错误的匹配。
现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配?
输入格式
输入一个只包含圆括号和方括号的字符串(字符个数小于255),判断字符串中的括号是否匹配。
输出格式
匹配就输出 “OK” ,不匹配就输出“Wrong”。
样例组
输入#1
[(])
输出#1
Wrong
输入#2
[([][])]
输出#2
OK
*/
#include<bits/stdc++.h>
#include<stack>
using namespace std;
stack<char> stk;
string s;
int main() {
cin >> s;
int len = s.size();
for(int i=0; i<len; i++) {
if(s[i] == '(' || s[i] == '[') { //遇到左边括号直接入栈
stk.push(s[i]);
} else if (s[i] == ')') { //右边小括号
if (stk.empty() or stk.top() == '[') {
cout << "Wrong";
return 0;
} else {
stk.pop();
}
} else if (s[i] == ']') { //右边中括号
if (stk.empty() or stk.top() == '(') {
cout << "Wrong";
return 0;
} else {
stk.pop();
}
}
}
if (stk.empty()) cout << "OK";
else cout << "Wrong";
return 0;
}
这里空空如也
有帮助,赞一个