很简单的利用栈进行括号匹配的题目。
当是左边的符号的时候,压进栈中。发现是右边的符号的时候,先判断其是否为空,然后与栈顶元素比较,不等直接return false
当是左边的符号的时候,压进栈中。发现是右边的符号的时候,先判断其是否为空,然后与栈顶元素比较,不等直接return false
注意一点就是 最后只有栈中为空的时候才返回true。
class Solution {
public:
bool isValid(string s) {
stack<char> sk;
int len=s.length();
for(int i=0;i<len;i++)
{
if(s[i]=='['||s[i]=='{'||s[i]=='(')
sk.push(s[i]);
else
{
if(s[i]==']')
{
if(sk.empty())
return false;
else{
char OnTop=sk.top();
sk.pop();
if(OnTop!='[')
return false;
}
}
if(s[i]=='}')
{
if(sk.empty())
return false;
else{
char OnTop=sk.top();
sk.pop();
if(OnTop!='{')
return false;
}
}
if(s[i]==')')
{
if(sk.empty())
return false;
else{
char OnTop=sk.top();
sk.pop();
if(OnTop!='(')
return false;
}
}
}
}
if(sk.empty())
return true;
else
return false;
}
};