20 有效的括号
class Solution {
public:
bool isValid(string s) {
stack<char> stk;
int n=s.size();
for(int i=0;i<n;i++)
{
if(s[i]=='{'||s[i]=='['||s[i]=='(')
{
stk.emplace(s[i]);
}
else
{
if(!stk.empty())
{
if(s[i]=='}'&&stk.top()=='{')
{
stk.pop();
}
else if(s[i]==']'&&stk.top()=='[')
{
stk.pop();
}
else if(s[i]==')'&&stk.top()=='(')
{
stk.pop();
}
else
{
return false;
}
}
else
{
return false;
}
}
}
if(stk.empty())
{
return true;
}
else
{
return false;
}
}
};
容易忘记的情况:
(1)
“{()[]” 或 “{”
(2)
“}”
(emplace相比于push可以省去复制移动的步骤。)