题解 | #有效括号序列#
有效括号序列
https://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2
#include <iostream>
#include <algorithm>
#include <stack>
using namespace std;
struct Solution {
bool isValid(string s) {
if (s.size() % 2 != 0) return false;
stack<char> st; //接收左括号对应的右括号
for (int i = 0; i < s.size(); ++i) {
switch (char ch = s[i]) { //判断左括号,压栈右括号
case'[':
st.push(']');
break;
case'{':
st.push('}');
break;
case'(':
st.push(')');
break;
default:
if (!st.empty() && st.top() == ch)
st.pop();
else //未先出现左括号或栈顶括号不匹配
return false;
}
}
return st.empty(); //栈空即所有括号匹配
}
};
int main() {
string s;
Solution S;
while (cin >> s)
cout << S.isValid(s);
return 0;
}
#include <algorithm>
#include <stack>
using namespace std;
struct Solution {
bool isValid(string s) {
if (s.size() % 2 != 0) return false;
stack<char> st; //接收左括号对应的右括号
for (int i = 0; i < s.size(); ++i) {
switch (char ch = s[i]) { //判断左括号,压栈右括号
case'[':
st.push(']');
break;
case'{':
st.push('}');
break;
case'(':
st.push(')');
break;
default:
if (!st.empty() && st.top() == ch)
st.pop();
else //未先出现左括号或栈顶括号不匹配
return false;
}
}
return st.empty(); //栈空即所有括号匹配
}
};
int main() {
string s;
Solution S;
while (cin >> s)
cout << S.isValid(s);
return 0;
}

