文章

7

粉丝

56

获赞

0

访问

3.8k

头像
括号匹配的问题 题解:
P4933
发布于2024年3月14日 12:12
阅读数 470

Java代码处理括号匹配:数据结构经典例题。

本应该用栈实现,但实际Java官网鼓励用ArrayDeque队列实现,且其内置也有push()和pop()方法

import java.util.ArrayDeque;
import java.util.Scanner;


public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        ArrayDeque<Character> deque = new ArrayDeque<>();
        char[] inChars = in.nextLine().toCharArray();
        boolean flag = true; // 标志YES或NO
        for (int i = 0; i < inChars.length; i++) {
            if (inChars[i] == '(' || inChars[i] == '[') { // 左括号压入栈中
                deque.push(inChars[i]); // 此处即addFirst()方法
            }else {
                 if (deque.isEmpty()) {  // 栈为空则不可调用pop方法,否则报错异常。此处应直接设置为false
                        flag = false;
                        break;
                    }
                char lastChar = deque.pop();
                 if (inChars[i] == ')' && lastChar != '(') {  // 若情况不满足,直接置false且break
                        flag = false;
       ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发