用一个栈 例如数组int a[10000]和一个指针p1,栈的大小取自题目要求,当然也可以取自 s 的位数;

用一个循环遍历s ,如果是“[ ( {"就入栈

如果是”])}"就出栈,同时对比栈中最上面的值,如果对应就继续,不对应就false。

直到循环结束,如果p1!=0,表示栈中还有残留的 return false;

全部匹配完 p1只能等于0

bool isValid(chars ) {

    // write code here

    int p = 0;

    int p1 = 0;

    int a[10000];

    while (s[p]) {

        if (s[p] == '(') {

            a[p1] = s[p];

            p1++;

            p++;

            continue;

        }

        if (s[p] == '{') {

            a[p1] = s[p];

            p1++;

            p++;

             continue;

        }

        if (s[p] == '[') {

            a[p1] = s[p];

            p1++;

            p++;

             continue;

        }

        if (s[p] == ')') {

            p1--;

            p++;

           if(a[p1]!='('){

               return false;

           }

            continue;

        }

        if (s[p] == ']') {

            p1--;

            p++;

           if(a[p1]!='['){

               return false;

           }

            continue;

        }  

         if (s[p] == '}') {

            p1--;

            p++;

           if(a[p1]!='{'){

               return false;

           }

            continue;

        }

    }

    if(p1==0){

         return true;

    }else {

        return false;

    }

   

}