Given a string containing just the characters '(', ')', '{', '}', '[' and ']',
determine if the input string is valid.
The brackets must close in the correct order, "()" and "()[]{}" are
all valid but "(]" and "([)]" are
not.
思路:利用栈结构,将左括号入栈,当遇到右括号,出栈判断是否匹配。最后栈为空则括号匹配
代码:
bool isValid(string s) {
string stack;
int len=s.length();
if(len<1)
{
return true;
}
if(len&0x0001 == 1)
{
return false;
}
int i=0;
int lenOfStack=0;
while(i<len)
{
if(s[i] == '(' || s[i]=='[' || s[i]=='{')
{
stack[lenOfStack]=s[i];
++lenOfStack;
++i;
}
else if(s[i] == ')')
{
if(stack[lenOfStack-1]=='(')
{
--lenOfStack;
++i;
}
else
{
return false;
}
}
else if(s[i] == ']')
{
if(stack[lenOfStack-1]=='[')
{
--lenOfStack;
++i;
}
else
{
return false;
}
}
else if(s[i] == '}')
{
if(stack[lenOfStack-1]=='{')
{
--lenOfStack;
++i;
}
else
{
return false;
}
}
}
if(lenOfStack == 0)
{
return true;
}
else
{
return false;
}
}
括号匹配验证
本文介绍了一种使用栈数据结构来检查字符串中括号是否正确匹配的方法。通过遍历字符串并将左括号压入栈中,遇到右括号时从栈中弹出最近的左括号进行匹配检查,最终栈为空则表示所有括号都正确匹配。
329

被折叠的 条评论
为什么被折叠?



