class Solution {
public:
/* 失配的情况有三种:
1. 左边括号多了
2. 右边括号多了
3. 左右不匹配
*/
bool isValid(string s) {
stack<int> st; // char 也行
int len = s.size(); // length()和size()一样
for (int i = 0; i < len; i++) {
if (s[i] == '(')
st.push(')');
else if (s[i] == '[')
st.push(']');
else if (s[i] == '{')
st.push('}');
// !!! 判断空要在前,不然可能越界 !!!
// 第二种情况,第三种情况
else if (st.empty() || s[i] != st.top())
return false;
else st.pop();
}
// 第一种情况
return st.empty();
}
};
总结
失配情况:
- 右边括号少了
- 右边括号多了
- 左右不匹配
出现的错误:
判断栈空要在前,不然会导致越界!