题解 | 有效括号序列

有效括号序列

https://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param s string字符串 
 * @return bool布尔型
 */
 
bool isValid(char* s) {
    int len = strlen(s);
    if (len == 0) return true;

    // 用数组模拟栈
    char stack[10000];  // 题目最大长度 1e4
    int top = -1;

    for (int i = 0; i < len; ++i) {
        char c = s[i];
        if (c == '(' || c == '[' || c == '{') {
            stack[++top] = c;   // 入栈
        } else if (c == ')' || c == ']' || c == '}') {
            if (top < 0) return false;  // 没有匹配的左括号

            char t = stack[top--];      // 栈顶出栈
            if ((c == ')' && t != '(') ||
                (c == ']' && t != '[') ||
                (c == '}' && t != '{')) {
                return false;
            }
        } else {
            // 题意中不会出现其它字符,这里可以忽略或直接 return false
            return false;
        }
    }

    // 栈空才是完全匹配
    return top == -1;
}

全部评论

相关推荐

评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务