zoukankan      html  css  js  c++  java
  • nyoj 括号配对问题(模拟栈的过程)

    题目描述

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

    输入

    第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符

    输出

    每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No

    样例输入

    3
    [(])
    (])
    ([[]()])

    样例输出

    No
    No
    Yes
    //和栈的操作相似,用另一个数组把未匹配的字符存起来,留着给下一次匹配。把匹配过的字符用下一个字符覆盖。

    #include<stdio.h>
    #include<string.h>
    using namespace std;
    int main()
    {
        int T;
        char a[10001];
        char b[10001];
        scanf("%d",&T);
        while(T--)
        {
            int o=1;
            scanf("%s",&a);
            int k=strlen(a);
            b[0]=a[0];
            for(int i=1; i<k; i++)
            {
                if((b[o-1]=='['&&a[i]==']')||(b[o-1]=='('&&a[i]==')'))
                {
                    o--;
                }
                else
                {
                    b[o]=a[i];
                    o++;
                }
            }
            if (o==0) puts("Yes");
            else puts("No");
        }
        return 0;
    }


  • 相关阅读:
    学习进度条54
    学习进度条53
    学习进度条52
    学习进度条51
    学习进度条50
    学习进度条49
    学习进度条48
    学习进度条47
    学习进度条45
    线程池中的阻塞队列选择
  • 原文地址:https://www.cnblogs.com/da-mei/p/9053334.html
Copyright © 2011-2022 走看看