给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
数组实现:始终是不能向官方对齐啊,思维差别真的很大,由于白天板砖,晚上休息时间在(象征性)干互联网无关的副业啊。成年人的时间。。
char match(char s)
{
if(s==')') return s='(';
if(s==']') return s='[';
if(s=='}') return s='{';
return 0;
}
bool isValid(char * s)
{
int i;
int len=strlen(s);
char st[len+1];
if(len%2)
return false;
int top=0;
for(i=0;i<strlen(s);i++)
{
if(s[i]=='(' )
{
st[top]=s[i];
s[i]='0';
top++;
}
if(s[i]=='[')
{
st[top]=s[i];
s[i]='0';
top++;
}
if(s[i]=='{')
{
st[top]=s[i];
s[i]='0';
top++;
}
if(top!=0&&st[top-1]==match(s[i]))
{
s[i]='0';
if(top>0)
top--;
}
}
if(top==0)
{
for(i=0;i<len;i++)
{
if(s[i]!='0')
return false;
}
return true;
}
return false;
}