class Solution {
public:
/**
*
* @param s string字符串
* @return bool布尔型
*/
bool isValid(string s) {
// write code here
int len = s.size();
stack<char> st;
for (int i = 0; i < len; ++i) {
if (s[i] == '(' || s[i] =='{' || s[i] == '[') { // 若为左括号,放入栈中
st.push(s[i]);
}
else { // 右括号
if (!st.empty()) { // 栈不为空
if ((s[i] == ')' && st.top() == '(') || (s[i] == ']' && st.top() == '[') || (s[i] == '}' && st.top() == '{') ) // 若匹配, 弹出栈顶
st.pop();
else { // 不匹配,返回
return false;
}
}
else // 不匹配,返回
return false;
}
}
return st.empty(); // 栈为空,则匹配
}
};