题解 | 括号配对问题

括号配对问题

https://www.nowcoder.com/practice/57260c08eaa44feababd05b328b897d7

#include <stdio.h>
#include <string.h>

int main() {
    char s[10001];
    scanf("%s", s);

    char stack[10001];
    int top = -1;

    for(int i = 0; s[i] != '\0'; i++) {

        // 左括号 → 入栈
        if(s[i] == '(' || s[i] == '[' || s[i] == '{') {
            stack[++top] = s[i];
        }
        // 右括号

            // 判断是否匹配
        if(s[i] == ')' || s[i] == '}' || s[i] == ']'){
            if(top == -1){
                printf("false");
                return 0;
            }
            if((s[i] == ')' && stack[top] == '(') ||
                (s[i] == ']' && stack[top] == '[') ||
                (s[i] == '}' && stack[top] == '{')) {
                top--;   // 匹配成功 → 出栈
            }
        } 
            
        }
    

    // 最后栈必须为空
    if(top == -1) printf("true\n");
    else printf("false\n");

    return 0;
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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