
思路解析(使用栈):
-  
使用一个栈来保存左括号。
 -  
每当遇到一个右括号时,检查栈顶元素是否是匹配的左括号。
-  
如果匹配,则弹出栈顶元素;
 -  
如果不匹配或者栈为空,则说明无效;
 
 -  
 -  
最后如果栈为空,说明全部括号匹配成功。
 
#define MAX 100000
bool isValid(char* s) {
    char stack[MAX];
    int top = -1;
    for(int i = 0; s[i] != '\0'; i++)
    {
        if(s[i] == '(' || s[i] == '[' || s[i] == '{')
        {
            if(top < MAX - 1)
            {
                stack[++ top] = s[i];
            }
            else
            {
                return false;   //栈满
            }
        }
        else if (s[i] == ')' || s[i] == ']' || s[i] == '}')
        {
            if(top == -1)
            {
                return false;
            }
            else if ((s[i] == ')' && stack[top] == '(') || (s[i] == ']' && stack[top] == '[') || (s[i] == '}' && stack[top] == '{'))
            {
               top--;
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }
    }
    return top == -1;
} 





















