可以使用栈来判断括号是否正确匹配。

具体步骤如下:

  1. 创建一个空栈。
  2. 读取输入的字符串中的每个字符,如果是左括号(花括号、中括号、小括号),则将其压入栈中。
  3. 如果是右括号(花括号、中括号、小括号),则检查栈是否为空。如果栈为空,则括号不匹配,输出结果为不匹配。
  4. 如果栈不为空,则取出栈顶元素。
    • 如果栈顶元素与当前字符匹配,则继续读取下一个字符。
    • 如果栈顶元素与当前字符不匹配,则括号不匹配,输出结果为不匹配。
  5. 重复步骤3和4,直到字符串中的所有字符都被处理。
  6. 如果栈为空,则括号匹配,输出结果为匹配。如果栈不为空,则括号不匹配,输出结果为不匹配。

以下是Java代码的实现:

import java.util.*;

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

        boolean isMatched = checkBracketMatching(str);
        if (isMatched) {
            System.out.println("括号匹配");
        } else {
            System.out.println("括号不匹配");
        }
    }

    public static boolean checkBracketMatching(String str) {
        Stack<Character> stack = new Stack<>();

        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (c == '{' || c == '[' || c == '(') {
                stack.push(c);
            } else if (c == '}' || c == ']' || c == ')') {
                if (stack.isEmpty()) {
                    return false;
                }

                char top = stack.pop();
                if ((c == '}' && top != '{') || (c == ']' && top != '[') || (c == ')' && top != '(')) {
                    return false;
                }
            }
        }

        return stack.isEmpty();
    }
}

运行程序,输入字符串后,即可判断括号是否正确匹配


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

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