Loading

6、括号匹配问题

  检验符号是否匹配. ‘[‘和’]’, '(‘和’)'成对出现时字符串合法. 例如"[]", "[[(()[])]]"是合法的; “([(])”, "[())"是不合法的.请你利用栈来解决括号的匹配问题。提示,可以使用Java库提供的栈对象进行编程。
输入:
标准输入,输入的第一行为一个正整数,表示输入行的数目N,接下来的N行每行为由括号字符组成的字符串,每行字符串的长度不超过100。
输出:
标准输出,使用N行输出输入的每行字符串是否为合法,如果合法输出“true”,否则输出“false”。

测试样例:
输入:
2
[]
[[(())([])[]
输出
true
false

import java.util.Scanner;
import java.util.Stack;

class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.nextLine();
        while (n-- > 0) {
            String s = sc.nextLine();
            Stack<Character> q = new Stack<>();
            for (int i = 0; i < s.length(); i++) {
                if (!q.isEmpty() && ((s.charAt(i) == ')' && q.peek().equals('('))
                        || (s.charAt(i) == ']' && q.peek().equals('[')))) {
                    q.pop();
                } else {
                    q.push(s.charAt(i));
                }
            }
            System.out.println(q.isEmpty());
        }
    }
}
posted @ 2022-09-18 14:13  qing影  阅读(14)  评论(0)    收藏  举报  来源