给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
这个可以用一个栈来解决,遇到前半个括号就进栈,遇到后半个括号,就出栈,并进行匹配。
bool isValid(char* s) {
char a[1000];
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;
}