思路:
先给出一个栈,用循环遍历字符串s,如果扫描到左括号,就把相对应的右括号弹进栈,如果还没扫描完字符串s栈就空了或者是栈里的右括号和字符串里的右括号不匹配,就直接返回false,剩下的就是匹配上的情况,就直接弹出栈中的元素,相当于匹配上就消掉。最后扫描完如果栈为空,就是满足情况,直接返回栈空即可。
题解c++:
class Solution {
public:
bool isValid(string s) {
if(s.size()%2!=0)
return false;
stack<char> 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();
}
};