给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
这道题就是栈的应用
char change(char a)
{
if(a == ']') return '[';
if(a == ')') return '(';
if(a == '}') return '{';
return 0;
}
bool isValid(char * s){
int len=strlen(s),top=0;
char stack[len],b;
if(len%2 == 1)
{
return false;
}
for(int i=0;i<len;i++)
{
b=change(s[i]);
if(b==0)
{
stack[top]=s[i];//入栈
top++;
}
else
{
if(top == 0 || stack[top-1] != b)
{
return false;
}
top--;//出栈
}
}
if(top != 0)//判断栈是否全匹配
{
return false;
}
return true;
}
本文介绍了一种使用栈数据结构来判断括号是否正确匹配的方法。通过定义一个转换函数将右括号映射到对应的左括号,并利用栈进行元素的压入和弹出操作,最终实现对字符串中括号的有效性验证。

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



