zuuuni 2023-06-26 10:46 采纳率: 66.7%
浏览 98
已结题

括号匹配问题,数据结构JAVA

括号匹配问题
从键盘输入一个包含有花括号{}、中括号[]、小括号()的字符串,判断括号是否正确匹配,输出判断结果。
例如:
输入({d}{([a])({c})}),则正确匹配。
输入[q{w(6[7]g)]},则错误匹配。

  • 写回答

2条回答 默认 最新

  • 瞬间的未来式 2023-06-26 10:52
    关注

    该回答引用chatgpt:

    img

    package com.school;
    
    import java.util.Scanner;
    import java.util.Stack;
    
    public class BracketMatching {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.print("请输入包含括号的字符串:");
            String input = scanner.nextLine();
    
            if (isBracketMatching(input)) {
                System.out.println("括号匹配正确");
            } else {
                System.out.println("括号匹配错误");
            }
        }
    
        private static boolean isBracketMatching(String input) {
            Stack<Character> stack = new Stack<>();
    
            for (char ch : input.toCharArray()) {
                if (ch == '(' || ch == '[' || ch == '{') {
                    stack.push(ch);
                } else if (ch == ')' || ch == ']' || ch == '}') {
                    if (stack.isEmpty()) {
                        return false;  // 右括号多于左括号,匹配错误
                    }
    
                    char top = stack.pop();
                    if ((ch == ')' && top != '(') || (ch == ']' && top != '[') || (ch == '}' && top != '{')) {
                        return false;  // 括号类型不匹配,匹配错误
                    }
                }
            }
    
            return stack.isEmpty();  // 括号匹配正确当且仅当栈为空
        }
    }
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月4日
  • 已采纳回答 6月26日
  • 创建了问题 6月26日