有效的括号
首先,先判断字符串是否为空
当字符串的长度为奇数时,比较特殊,可以直接判断为false,不需要计算
然后,我们创建一个新的栈
如果,字符串的字符是’(‘或’[‘或’{'时,入栈
如果,不是,就判断前一个字符是否为对应的括号,如果不对应,就返回false
当相对应时,出栈
其中如果第一个字符就是本应在后面的括号,直接返回false
最后判断我们创建的栈是否为空
为空则说明为true
不为空则说明为false
下面附上代码
class Solution {
public:
bool isValid(string s)
{
if (s.empty())
{
return true;
}
if (s.size() % 2 == 1)
{
return false;
}
stack<int> mystack;
for (int i = 0; i <= s.size() - 1; i++)
{
if (s.at(i) == '(' || s.at(i) == '[' || s.at(i) == '{')
{
mystack.push(s.at(i));
}
else if (i != 0)
{
if (s.at(i) == ')')
{
if (mystack.top() == '(')
{
mystack.pop();
continue;
}
else
{
return false;
}
}
else if (s.at(i) == ']')
{
if (mystack.top() == '[')
{
mystack.pop();
continue;
}
else
{
return false;
}
}
else
{
if (mystack.top() == '{')
{
mystack.pop();
continue;
}
else
{
return false;
}
}
}
else
{
return false;
}
}
if (mystack.empty())
{
return true;
}
else
{
return false;
}
}
};