简单题,练练手,不太熟悉C++的用法
思路:栈存储,注意判空,若为左括号入栈,若为右括号比较栈顶与新元素是否是一组括号
#include <stack>
class Solution {
public:
int isExist(char a, char* p) {
for (int i = 0; i < 3; i++) {
if (a == p[i]) {
return i;
}
}
return -1;
}
bool isValid(string s) {
char left[3] = {'(', '[', '{'};
char right[3] = {')', ']', '}'};
stack<char> st;
for (int i = 0; i < s.size(); i++) {
if (isExist(s[i], left) >= 0) {
st.push(s[i]);
}
else if (isExist(s[i], right) >= 0) {
if (st.size() == 0) {
return false;
}
else {
char tmp = st.top();
if (isExist(tmp, left) != isExist(s[i],right)) {
return false;
}
st.pop();
}
}
}
if (st.empty()) {
return true;
}
else {
return false;
}
}
};