• 括号配对nyoj2(疑问)


    描述现在,有一行括号序列,请你检查这行括号是否配对。

     
    输入
    第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
    输出
    每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
    样例输入
    3
    [(])
    (])
    ([[]()])
    样例输出
    No
    No
    Yes

    #include <stdio.h>
    #include <string.h>
    #define M 10001
    char s[M], s1[M];//s是目标数组,s1是栈
    int main()
    {
        int n, len, top, i;
        scanf("%d", &n);
        while(n--){
    
                
                top = 3;//栈顶
                scanf("%s", s+1);
                len = strlen(s+1);
                for(i = 1; i <= len; i++){
    
                        s1[top++] = s[i];//入栈
                        while(s1[top-1] - s1[top-2] == 1 || s1[top-1] - s1[top-2] == 2)//这里用while是处理【】()等相邻的情况
                        {
                            top -= 2;//出栈
                        }
    
                }
                if(top <= 3)
                    printf("Yes
    ");
                else
                    printf("No
    ");
        }
        return 0;
    }
    
                
                        
    View Code

    疑问: 有top小于3的情况吗?

  • 相关阅读:
    java入门学习(二)
    java入门学习(一)
    python3之数据类型
    pip基础用法
    python中的序列化与反序列化
    python装饰器
    python WEB接口自动化测试之requests库详解
    QQ发送邮件实例
    获取当前目录下最新的文件
    The Zen of Python
  • 原文地址:https://www.cnblogs.com/the-one/p/3265683.html
Copyright © 2020-2023  润新知