TOP101题解 | BM44#有效括号序列#

有效括号序列

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

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * @author Senky
 * @date 2023.08.24
 * @par url https://www.nowcoder.com/creation/manager/content/584337070?type=column&status=-1
 * @brief 
 *          (:ASCII 码值为 40
 *          ):ASCII 码值为 41
 *          {:ASCII 码值为 123
 *          }:ASCII 码值为 125
 *          [:ASCII 码值为 91
 *          ]:ASCII 码值为 93
 * @param s string字符串 
 * @return bool布尔型
 */
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
bool isValid(char* s ) 
{
    // write code here 
    int len = strlen(s);

    if (*s == '\0' || len % 2 == 1) 
    {
        //奇数个符号肯定不匹配
        return false;
    }

    char stack[len]; // 栈
    int top = -1;     // 栈顶索引

    for (int i = 0; i < len; i++) 
    {
        if (s[i] == '(' || s[i] == '[' || s[i] == '{') 
        {
            // 遇到左括号,入栈
            stack[++top] = s[i];
        } else if (top >= 0 &&
                   ((s[i] == ')' && stack[top] == '(') ||
                    (s[i] == ']' && stack[top] == '[') ||
                    (s[i] == '}' && stack[top] == '{'))) {
            // 遇到右括号且与栈顶元素匹配,出栈
            top--;
        } 
        else 
        {
            // 遇到右括号但与栈顶元素不匹配,返回 false
            return false;
        }
    }
    //最后栈一定为空,栈顶指针为-1
    return (top == -1);

}

#TOP101#
TOP101-BM系列 文章被收录于专栏

系列的题解

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务