class Solution {
public:
bool isValid(string s) {
stack<int> st;
for (int i = 0; i < s.size(); i++) {
if (s[i] == '{') {
st.push('}');
} else if (s[i] == '(') {
st.push(')');
} else if (s[i] == '[') {
st.push(']');
} else if (st.empty() || st.top() != s[i]) {
return false;
} else {
st.pop();
}
}
return st.empty();
}
};
时间复杂度:O(N)
思路:首先得分析会有哪几种情况会导致不匹配,一共有三种
第一种情况,字符串里左方向的括号多余了 ,所以不匹配。
第二种情况,括号没有多余,但是 括号的类型没有匹配上。
第三种情况,字符串里右方向的括号多余了,所以不匹配。
然后利用栈的特性解决问题。