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