关闭

南阳 ACM 括号匹配

标签: JAVAACM
29人阅读 评论(0) 收藏 举报
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");
        }
    }
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:196次
    • 积分:23
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章存档