使用 Java 算法判断字符串括号匹配

本文将介绍使用 Java 实现一个算法,判断一个包含花括号'{}'、中括号'[]'、小括号'()' 的字符串中括号是否正确匹配。

算法实现

思路是用栈来存储左括号,遇到右括号时弹出栈顶元素,判断是否匹配。如果最后栈为空,则说明所有括号都匹配了。

public static boolean isMatch(String str) {
    Stack<Character> stack = new Stack<>();
    for (char c : str.toCharArray()) {
        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();
}

// 测试代码
public static void main(String[] args) {
    String str1 = "{[()]}";
    String str2 = "{[()]}";
    String str3 = "{[()]}(";
    System.out.println(isMatch(str1)); // true
    System.out.println(isMatch(str2)); // false
    System.out.println(isMatch(str3)); // false
}

代码解析

  1. isMatch(String str) 方法:

    • 创建一个栈 stack 来存储左括号。
    • 遍历字符串 str 中的每个字符 c
      • 如果 c 是左括号,则将其压入栈顶。
      • 如果 c 是右括号,则检查栈是否为空。如果为空,则说明匹配失败,直接返回 false
      • 否则,弹出栈顶元素 top,判断 ctop 是否匹配。如果不匹配,则返回 false
    • 如果遍历完字符串后,栈为空,则说明所有括号都匹配了,返回 true
  2. main(String[] args) 方法:

    • 定义三个测试字符串 str1, str2, str3,分别代表匹配、不匹配、不匹配的场景。
    • 使用 isMatch 方法判断每个字符串的括号是否匹配,并输出结果。

总结

本文介绍了使用 Java 算法判断字符串中括号匹配的实现方法。该算法简洁高效,易于理解,可以应用于各种需要判断括号匹配的场景,例如代码语法检查、表达式解析等。


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

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