可以使用栈来判断括号是否正确匹配。具体步骤如下:

  1. 创建一个空栈,用于存放左括号。
  2. 遍历输入的字符串中的每个字符:
    • 如果字符是左括号(花括号、中括号或小括号),将其压入栈中。
    • 如果字符是右括号,判断栈是否为空:
      • 如果栈为空,则说明右括号没有对应的左括号,括号不匹配,返回false。
      • 如果栈不为空,将栈顶的左括号弹出,判断它们是否匹配:
        • 如果左括号与右括号不匹配(例如"{]"),括号不匹配,返回false。
        • 如果左括号与右括号匹配,则继续遍历下一个字符。
  3. 遍历结束后,判断栈是否为空:
    • 如果栈为空,则所有括号都匹配,返回true。
    • 如果栈不为空,则还有左括号没有右括号与之匹配,括号不匹配,返回false。

下面是完整的Java代码实现:

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

public class BracketMatching {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入包含花括号、中括号、小括号的字符串:");
        String str = scanner.nextLine();
        boolean isMatching = isBracketMatching(str);
        if (isMatching) {
            System.out.println("括号匹配");
        } else {
            System.out.println("括号不匹配");
        }
    }

    public static boolean isBracketMatching(String str) {
        Stack<Character> stack = new Stack<>();
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            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();
    }
}

运行代码,输入包含括号的字符串,即可判断括号是否正确匹配

从键盘输入一个包含有花括号、中括号、小括号的字符串判断括号是否正确匹配输出判断结果。请用Java语言编写

原文地址: https://www.cveoy.top/t/topic/hOcU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录