南阳 ACM 括号匹配

原创 2016年08月30日 16:43:43
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class Main {

    public static class BracketStack {
        List<Character> s;
        int top;

        BracketStack() {
            top = -1;
            s = new LinkedList<Character>();
        }

        public void pop() {
            s.remove(top--);
        }
        
        public void clear(){
            s.clear();
        }

        public boolean push(char element) {
            if (top < 0) {
                s.add(element);
                top++;
                return true;
            } else {
                char topChar = s.get(top);
                if (element == ']' || element == ')') {
                    if (topChar + 1 == element || topChar + 2 == element) {
                        pop();
                        return true;
                    } else {
                        return false;
                    }
                } else {
                    s.add(element);
                    top++;
                    return true;
                }
            }
        }

        public boolean isEmpty() {
            return top == -1 ? true : false;
        }
    }

    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int size = Integer.parseInt(cin.nextLine());
        List<Boolean> flags = new ArrayList<Boolean>();
        BracketStack bs = null;
        int j=0;
        while (j++ <size) {
            String input = cin.nextLine();
            int length = input.length();
            bs = new BracketStack();
            for (int i = 0; i < length; i++) {
                if (!bs.push(input.charAt(i))) {
                    break;
                }
            }

            if (bs.isEmpty()) {
                flags.add(true);
            }else{
                flags.add(false);
            }
        }
        for (int i = 0; i < flags.size(); i++) {
            System.out.print(flags.get(i) ? "Yes" : "No");
            if (i + 1 == flags.size())
                continue;
            System.out.print("\n");
        }
    }
}

南阳理工ACM-题目2-括号配对问题

括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述现在,有一行括号序列,请你检查这行括号是否配对。 输入第一行输入一个数N(0 输出每组输入数据的...

南阳理工ACM 题目2 括号配对问题

括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3      描述 现在,有一行括号序列,请你检查这行括号是否配对。      输入 第一行...

南阳理工--ACM--括号配对

括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述现在,有一行括号序列,请你检查这行括号是否配对。 输入第一行输入一个数N(...

#include<stack> 南阳oj括号匹配

描述 现在,有一行括号序列,请你检查这行括号是否配对。 输入第一行输入一个数N(0 输出每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出...

南阳oj 第15题 括号匹配(二)

括号匹配(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:6 描述给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添...

南阳理工acm括号配对问题

括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述现在,有一行括号序列,请你检查这行括号是否配对。 输入第一行输入一个数N(0 输出每组输入数据的...

南阳理工OJ15-括号匹配(2)

描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来。 如: []是匹配的 ([])[]是匹配的 ((]是不匹配的 ([)]是不匹...
  • e_one
  • e_one
  • 2016年04月26日 12:53
  • 5189

南阳理工ACM(字符串匹配)

相关字符串问题的链接(点击打开链接)描述 上一集我们讲到 作为工作室老大的刚哥遇到很多女生的追求,你帮他个挑选了个英语成绩不错的对象。在你的帮助下,刚哥找到了个    英语学霸村    的小花,刚哥对...

acm 括号匹配

  • 2015年05月27日 10:37
  • 2KB
  • 下载

[ACM] 携程预赛第一场 括号匹配 (动态规划)

括号匹配 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submis...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:南阳 ACM 括号匹配
举报原因:
原因补充:

(最多只允许输入30个字)