给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
这个题目可以用辅助栈来解题。当遇到前半个括号出现时进栈。出现后半个括号时出栈进行匹配。
bool isValid(char* s) {
char a[10240];
int i=0,j=-1;
while(s[i]!='\0')
{
if(s[i]=='(')
a[++j]='(';
else if(s[i]=='[')
a[++j]='[';
else if(s[i]=='{')
a[++j]='{';
else if(s[i]==']')
{
if(j==-1||a[j]!='[')
j=-2;
else
j--;
}
else if(s[i]=='}')
{
if(j==-1||a[j]!='{')
j=-2;
else
j--;
}
else if(s[i]==')')
{
if(j==-1||a[j]!='(')
j=-2;
else
j--;
}
if(j==-2)
break;
i++;
}
if(j!=-1)
return false;
else
return true;
}
本文深入探讨了如何使用辅助栈解决括号匹配问题,详细解释了左括号入栈、右括号出栈并匹配的过程,确保字符串中括号的有效性。
790

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



