南阳ACM 括号匹配 JAVA

原创 2016年08月30日 16:39:54
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] 括号匹配问题(栈的使用)

括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 现在,有一行括号序列,请你检查这行括号是否配对。 输入 第一行输入一个数N(0...
  • sr19930829
  • sr19930829
  • 2014年04月05日 13:18
  • 2434

Java 用栈解决括号匹配问题

在南阳理工ACM看到的一道题 问题描述:问题描述 : 输入一个字符串 里面只含有 [ , ] , ( , ) 四种括号 ; 现要求判断这个字符串 是否满足括号匹配  如    ([])()    ...
  • qq_26331127
  • qq_26331127
  • 2015年12月08日 17:55
  • 3734

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

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

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

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

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

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

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

括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3      描述 现在,有一行括号序列,请你检查这行括号是否配对。      输入 第一行...
  • CORA_S_T
  • CORA_S_T
  • 2017年04月15日 19:22
  • 228

南阳理工acm括号配对问题

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

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

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

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

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

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

相关字符串问题的链接(点击打开链接)描述 上一集我们讲到 作为工作室老大的刚哥遇到很多女生的追求,你帮他个挑选了个英语成绩不错的对象。在你的帮助下,刚哥找到了个    英语学霸村    的小花,刚哥对...
  • qq_39090674
  • qq_39090674
  • 2017年07月17日 13:55
  • 298
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:南阳ACM 括号匹配 JAVA
举报原因:
原因补充:

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