题目描述
题目分析
从题目来看,本来想用字符串反转直接比较字符串,但是存在分开的括号,所以不能这样干
可以用字符挨个比较,但是我想到了栈就很简单的解决了
遇到可以消除的就出栈,不能消除的就进栈,最后判断栈是否为空就可以了
题解代码
class Solution {
public:
bool check(char a ,char b)
{
if(a=='('&&b==')'||
a=='['&&b==']'||
a=='{'&&b=='}')
return true;
else
return false ;
}
bool isValid(string str) {
stack <char> stack_ans;
bool flag ;
for(int i = 0 ;i < str.length();i++)
{
if(stack_ans.empty()||!check(stack_ans.top(),str[i]))
stack_ans.push(str[i]);
else
stack_ans.pop();
}
return stack_ans.empty();
}
};