20.Valid Parentheses
左右括号匹配问题
方法:
1.将左括号存入队列,出现一个右括号便开始匹配。(存左匹右)
2.出现一个左括号便添加一个右括号进队列,出现一个右括号便匹配消去。(存右匹右)
代码1:
boolisValid(strings) {
map<char,char>brackets={{'{','}'},{'[',']'},{'(',')'}};
vector<char>stack;
for(inti=0;i
{
cout<
if(!stack.empty())
cout<
if(!stack.empty() && brackets[stack.back()]==s[i])
{
stack.pop_back();
cout<<"pop"<
}
elseif(s[i]==')'||s[i]=='}'||s[i]==']')
{
cout<<"false";
returnfalse;
}
else
{
stack.push_back(s[i]);
cout<<"push"<
}
}
if(stack.empty())
return true;
return false;
}
代码2:
boolisValid1(strings) {
vector<char>stack;
for(inti=0;i
{
if(s[i]=='(')
{
stack.push_back(')');
}
elseif(s[i]=='[')
{
stack.push_back(']');
}
elseif(s[i]=='{')
{
stack.push_back('}');
}
elseif(!stack.empty() && stack.back()==s[i])
{
stack.pop_back();
}
else
returnfalse;
}
if(stack.empty())
return true;
return false;
}