经典括号匹配问题
注意一些小细节,比如如果字符串大小为奇数肯定不行可以减掉,右括号匹配左括号时的返回false条件还有栈空的情况,循环结束后栈必须为空等。
class Solution {
public:
bool isValid(string s) {
if (s.size() % 2 != 0)
return false;
stack<char> c;
for (int i = 0; i < s.size(); i++)
{
if (s[i] == '(' || s[i] == '{' || s[i] == '[')
{
c.push(s[i]);
continue;
}
switch (s[i])
{
case ')':
{
if (c.empty() || c.top() != '(')
return false;
else
{
c.pop();
break;
}
}
case ']':
{
if (c.empty() || c.top() != '[')
return false;
else
{
c.pop();
break;
}
}
case '}':
{
if (c.empty() || c.top() != '{')
return false;
else
{
c.pop();
break;
}
}
default:
break;
}
}
if(c.empty())
return true;
else
{
return false;
}
}
};