1.链接: . - 力扣(LeetCode)【点击即可跳转】
思路:
使用 栈 来完成操作
1.左括号-- 入栈
2.右括号-- 判断出栈顶的左括号与右括号是否匹配
如果匹配-->继续
不匹配-->终止
代码中 栈 的基本实现,不在以下展示,参考上一篇文章。
以下为函数的具体实现:
bool isValid(char* s)
{
ST st;
StackInit(&st);
while(*s !='\0')
{
switch(*s)
{ //左括号
case'{':
case'[':
case'(':
{
StackPush(&st,*s);
++s;
break;
} //右括号
case'}':
case']':
case')':
{
if(StackEmpty(&st))
{
StackDestory(&st);
return false;
}
char top=StackTop(&st);
StackPop(&st);
//不匹配
if((*s=='}'&&top!='{')
||(*s==']'&&top!='[')
||(*s==')'&&top!='('))
{
StackDestory(&st);
return false;
}
else//匹配
{
++s;
}
break;
}
default:
break;
}
}
bool ret=StackEmpty(&st);
StackDestory(&st);
return ret;
}
谢谢观看,希望对你有所帮助