题目要求
思路
1.使用栈的先进后出的思路,存储前括号,如果st中有对应的后括号与之匹配就说明没问题
2.有两个特殊情况就是字符串第一个就是后括号,这个情况本身就是不匹配的,还有一种是前面的n个字符串本身是匹配的,这时候来了个后括号,这种也是不匹配的,这里的处理方法是,如果栈为空,不管这个字符是啥,都插入进去,最后只要判断栈是否为空就行,如果第一个字符串是后括号,最后栈肯定是不为空的。
代码实现
class Solution {
public:stack<char> st;bool isValid(string s) {// write code hereint size = s.size();for(int i = 0; i < size; i++){if (s[i] == '[' || s[i] == '{' || s[i] == '(' || st.empty())st.push(s[i]);if (s[i] == ']'){if (st.top() == '[')st.pop();elsereturn false;}if (s[i] == '}'){if (st.top() == '{')st.pop();elsereturn false;}if (s[i] == ')'){if (st.top() == '(')st.pop();elsereturn false;}}if(!st.empty())return false;return true;}
};