当前位置:首页 > Java

java如何匹配括号

2026-03-21 00:43:25Java

匹配括号的方法

在Java中,可以使用栈(Stack)数据结构来检查字符串中的括号是否匹配。栈的特点是后进先出(LIFO),适合用于检查括号的嵌套关系。

使用栈实现括号匹配

import java.util.Stack;

public class BracketMatcher {
    public static boolean isBalanced(String expression) {
        Stack<Character> stack = new Stack<>();
        for (int i = 0; i < expression.length(); i++) {
            char ch = expression.charAt(i);
            if (ch == '(' || ch == '[' || ch == '{') {
                stack.push(ch);
            } else if (ch == ')' || ch == ']' || ch == '}') {
                if (stack.isEmpty()) {
                    return false;
                }
                char top = stack.pop();
                if (!isMatchingPair(top, ch)) {
                    return false;
                }
            }
        }
        return stack.isEmpty();
    }

    private static boolean isMatchingPair(char opening, char closing) {
        return (opening == '(' && closing == ')') ||
               (opening == '[' && closing == ']') ||
               (opening == '{' && closing == '}');
    }

    public static void main(String[] args) {
        String test1 = "{[()]}";
        String test2 = "{[(])}";
        System.out.println(isBalanced(test1)); // true
        System.out.println(isBalanced(test2)); // false
    }
}

使用正则表达式匹配简单括号

对于简单的括号匹配(如仅包含一种类型的括号),可以使用正则表达式结合循环来检查:

java如何匹配括号

import java.util.regex.Pattern;

public class SimpleBracketMatcher {
    public static boolean isBalanced(String expression) {
        String regex = "\\(\\)";
        String current = expression;
        while (Pattern.compile(regex).matcher(current).find()) {
            current = current.replaceAll(regex, "");
        }
        return current.isEmpty();
    }

    public static void main(String[] args) {
        String test1 = "()()";
        String test2 = "(()";
        System.out.println(isBalanced(test1)); // true
        System.out.println(isBalanced(test2)); // false
    }
}

注意事项

  • 栈方法适用于多种括号类型(如圆括号、方括号、花括号),并能处理嵌套关系。
  • 正则表达式方法仅适用于单一类型的括号,且无法处理复杂嵌套场景。
  • 实际应用中,栈方法更通用且可靠。

标签: 括号java
分享给朋友:

相关文章

java如何

java如何

Java 基础语法 Java 是一种面向对象的编程语言,语法相对严谨。每个 Java 程序必须包含一个 main 方法作为程序入口。以下是一个简单的 Java 程序示例: public class…

java如何上传文件

java如何上传文件

使用HttpURLConnection上传文件 在Java中,可以通过HttpURLConnection实现文件上传功能。需要设置请求头为multipart/form-data,并构建包含文件数据的请…

java如何连接数据库

java如何连接数据库

Java连接数据库的方法 Java连接数据库通常使用JDBC(Java Database Connectivity)技术,以下是具体步骤和示例代码。 加载数据库驱动 在连接数据库之前,需要加载对应的…

java如何运行程序

java如何运行程序

运行Java程序的步骤 安装Java开发工具包(JDK) 确保系统已安装JDK,可通过命令行输入java -version和javac -version验证。若未安装,需从Oracle官网下载并配置环…

java如何连接mysql数据库

java如何连接mysql数据库

连接 MySQL 数据库的步骤 添加 MySQL 驱动依赖 在项目中引入 MySQL 的 JDBC 驱动。如果使用 Maven,可以在 pom.xml 中添加以下依赖: <dependency…

如何导入java项目

如何导入java项目

导入Java项目的方法 使用IDE导入(如IntelliJ IDEA或Eclipse) 打开IDE后选择导入现有项目,导航至项目根目录(包含pom.xml或build.gradle的文件位置)。IDE…