C++ 数据结构 判断一个字符串中括号是否匹配
发布网友
发布时间:2022-06-06 15:30
我来回答
共1个回答
热心网友
时间:2023-10-10 10:33
思路是遇到左括号就入栈,碰到右括号就判断栈顶的元素是否匹配的左括号,不是的话就返回false,是的话就弹出栈顶元素,然后继续下一个字符。判断函数如下:
bool
is_comm_stack(char
const*
src)
{
assert(src);
char
ch;
char
const*
p=src;
stack<char>
s;
while(*p)
{
switch(*p)
{
case
'(':
case
'[':
case
'{':
s.push
(*p);
break;
case
')':
if(!s.empty())
{
if((ch=s.top())!='(')
return
false;
else
{
s.pop();
break;
}
}
else
return
false;
case
']':
if(!s.empty())
{
if((ch=s.top())!='[')
return
false;
else
{
s.pop();
break;
}
}
else
return
false;
case
'}':
if(!s.empty())
{
if((ch=s.top())!='{')
return
false;
else
{
s.pop();
break;
}
}
else
return
false;
default:
break;
}
++p;
}
if(!s.empty())return
false;
return
true;
}