Java 括号匹配算法:判断字符串中括号是否匹配

本文将介绍使用 Java 语言实现的括号匹配算法,该算法可以判断输入的字符串中花括号'{}'、中括号'[]'、小括号'()'是否正确匹配。

算法实现

该算法使用栈数据结构来存储未匹配的左括号,并根据匹配规则进行判断。具体步骤如下:

  1. 初始化一个空栈。
  2. 遍历输入字符串,依次判断每个字符:
    • 如果字符为左括号 ('{'、'[' 或 '('),则将该字符入栈。
    • 如果字符为右括号 ('}'、']' 或 ')'),则进行以下操作:
      • 如果栈为空,则说明匹配失败,直接返回 false
      • 从栈顶弹出一个字符,并判断该字符是否与当前右括号匹配。如果匹配失败,则返回 false
  3. 遍历完整个字符串后,如果栈为空,则说明所有括号匹配成功,返回 true;否则,说明匹配失败,返回 false

Java 代码实现

import java.util.*;

public class BracketMatching {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入包含有花括号{}、中括号[]、小括号()的字符串:");
        String input = scanner.nextLine();
        
        if (isBracketMatching(input)) {
            System.out.println("括号匹配正确");
        } else {
            System.out.println("括号匹配错误");
        }
    }
    
    public static boolean isBracketMatching(String input) {
        Stack<Character> stack = new Stack<>();
        
        for (int i = 0; i < input.length(); i++) {
            char c = input.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();
    }
}

运行程序

运行程序后,可以输入一个包含有花括号'{}'、中括号'[]'、小括号'()'的字符串,程序会判断括号是否正确匹配,并输出判断结果。

例如:

  • 输入:{[]}() 输出:括号匹配正确
  • 输入:{[}] 输出:括号匹配错误

应用场景

括号匹配算法在很多编程场景中都有应用,例如:

  • 代码语法检查
  • 表达式解析
  • 数据结构验证

总结

本文介绍了使用 Java 语言实现的括号匹配算法,该算法简单易懂,并具有较高的效率。希望本文可以帮助读者更好地理解括号匹配算法的原理和实现方法。


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

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