leetcode 20. 有效的括号 C语言版

给定一个只包括 '('')''{''}''['']' 的字符串,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

这个可以用一个栈来解决,遇到前半个括号就进栈,遇到后半个括号,就出栈,并进行匹配。

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;
}

猜你喜欢

转载自blog.csdn.net/ASZZY/article/details/84074416