- 王道课后综合题3.3.1。今天复习了队列和队列栈的应用写对应的练习题。力扣20题。用的方法比较笨直接暴力匹配,后面看大佬题解发现可以直接入栈右括号,这样就可以直接进行匹配,没必要进行这么啰嗦的事情。
class Solution {
public:
bool isValid(string s) {
int num=s.size();
if(num%2!=0)return false;
stack<char>st;
int i=0;
while(i<num){
//只要是左括号全部入栈
if(s[i]=='['||s[i]=='{'||s[i]=='('){
st.push(s[i]);
}
else{
//栈是否为空
if(!st.empty())
{
//右括号挨着匹配,都不匹配返回错误
if(s[i]==')'&&st.top()=='(') st.pop();
else if (s[i]==']'&&st.top()=='[') st.pop();
else if (s[i]=='}'&&st.top()=='{') st.pop();
else return false;
}
//栈为空又有右括号返回错误
else return false;
}
i++;
}
//栈为空则匹配成功
return st.empty();
}
};