题目描述
这道题的难度等级为简单,所以不能话不多说,直接上解法
解法1
class Solution {
public:
bool isValid(string s) {
stack<char> stack1;
for(char c:s){
if(stack1.empty()){
stack1.push(c);
}else if(stack1.top()=='('&&c==')'){
stack1.pop();
}else if(stack1.top()=='['&&c==']'){
stack1.pop();
}else if(stack1.top()=='{'&&c=='}'){
stack1.pop();
}else{
stack1.push(c);
}
}
return stack1.empty();
}
};
解法2
class Solution {
public:
bool isValid(string s) {
stack<char> m_stack;
for(const auto& v:s){
if(m_stack.empty())
m_stack.push(v);
else if(compare(m_stack.top(),v))
m_stack.pop();
else
m_stack.push(v);
}
return m_stack.size()==0?true:false;
}
private:
bool compare(const char& c1,const char& c2){
return(c1=='['&&c2==']')||(c1=='('&&c2==')')||(c1=='{'&&c2=='}');
}
};