当前位置:首页 > Java

java如何匹配括号

2026-03-21 00:43:25Java

java如何匹配括号

匹配括号的方法

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

java如何匹配括号

使用栈实现括号匹配

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
    }
}

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

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

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 Development Kit (JDK),可通过命令行输入java -version和javac -version验证安装。 编写Java代码并保存为.…

java如何遍历map

java如何遍历map

遍历Map的几种方法 在Java中,遍历Map有多种方式,可以根据需求选择合适的方法。以下是常见的几种遍历方式: 使用entrySet遍历 通过entrySet()方法获取键值对的集合,可以同时访问…

eclipse如何创建java

eclipse如何创建java

在Eclipse中创建Java项目 打开Eclipse后,选择菜单栏中的"File" -> "New" -> "Java Project"。在弹出的对话框中输入项目名称,确保"Use de…

js实现超大的大括号

js实现超大的大括号

使用 CSS 和 SVG 实现超大括号 在 JavaScript 中可以通过动态生成 SVG 或 CSS 样式来创建超大括号效果。以下是两种实现方式: CSS 实现方案 通过伪元素和边框旋转实现大括…

js函数实现大括号匹配

js函数实现大括号匹配

大括号匹配的 JavaScript 实现 大括号匹配是指检查字符串中的大括号 { 和 } 是否成对出现且嵌套正确。以下是几种实现方法: 使用栈结构进行匹配 栈是解决括号匹配问题的经典数据结构…

如何查看java版本

如何查看java版本

查看Java版本的命令行方法 在终端或命令提示符中运行以下命令,可以快速查看已安装的Java版本: java -version 输出示例: java version "17.0.1" 20…