给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例 1:
输入:s = “()”
输出:true
示例 2:
输入:s = “()[]{}”
输出:true
示例 3:
输入:s = “(]”
输出:false
示例 4:
输入:s = “([)]”
输出:false
示例 5:
输入:s = “{[]}”
输出:true
bool isValid(char * s){
int length=strlen(s);//获取字符长度
if(length==0)//别用'\0'判断
return true;
if(length%2!=0)
return false;
char *stack=(char *)malloc(sizeof(char)*length);//建立一个标记数组
int i,top=-1;
for(i=0;i<length;i++)
{
if(*(s+i)==')')
if(top>-1&&stack[top]=='(')
top--;
else
return false;
else if(*(s+i)=='}')
if(top>-1&&stack[top]=='{')
top--;
else
return false;
else if(*(s+i)==']')
if(top>-1&&stack[top]=='[')
top--;
else
return false;
else
stack[++top]=s[i];
}
if(top>-1)
return false;
return true;
}