UVA - 673 Parentheses Balance 【栈】

Description

#include <iostream>
#include <cstdio>
#include <stack>
#include <cstring>

using namespace std;

int main()
{
    char str[150];
    int n, len, flag;

    scanf("%d", &n);
    getchar();
    while (n--)
    {
        stack<char> s;
        gets(str);
        flag = 1;
        if (str[0] == '\n')
            len = 0;
        else
        {
            len = strlen(str);
            for (int i = 0; i < len; i++)
            {
                switch (str[i])
                {
                    case ']':
                        if (s.empty()) {
                            flag = 0;
                            break;
                        }
                        if (s.top() == '[')
                            s.pop();
                        break;
                    case ')':
                        if (s.empty()) {
                            flag = 0;
                            break;
                        }
                        if (s.top() == '(')
                            s.pop();
                        break;
                    default :
                        s.push(str[i]);
                        break;
                }
                if (0 == flag)
                    break;
            }
        }
        if ((s.empty() && 1 == flag) || (0 == len))
            printf("Yes\n");
        else
            printf("No\n");
    }
    return 0;
}
发布了399 篇原创文章 · 获赞 440 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/Aibiabcheng/article/details/105479931