一、题意
输入若干个括号序列,判断是否合法。注意可能输入空串,空串为合法。
二、解析
括号序列的判断,老栈题了。
注意由于有空串输入,所以需要用getline()。
三、代码
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int n;
string str;
int main() {
cin >> n;
cin.ignore();
while(n --) {
getline(cin, str);
stack<char> stk;
for(char ch : str) {
if(stk.empty()) stk.push(ch);
else {
char top = stk.top();
if(top == '(' && ch == ')' || top == '[' && ch == ']') stk.pop();
else stk.push(ch);
}
}
cout << (stk.empty() ? "Yes" : "No") << endl;
}
}四、归纳
- 括号题目要想到栈
- 用栈的题目时,一般可以单独考虑空栈情形
- 若题目可能输入空串,要用getline(cin, str),因为cin>>string会忽视空行

京公网安备 11010502036488号