Java 括号匹配算法:判断字符串中括号是否匹配
Java 括号匹配算法:判断字符串中括号是否匹配
本文将介绍使用 Java 语言实现的括号匹配算法,该算法可以判断输入的字符串中花括号'{}'、中括号'[]'、小括号'()'是否正确匹配。
算法实现
该算法使用栈数据结构来存储未匹配的左括号,并根据匹配规则进行判断。具体步骤如下:
- 初始化一个空栈。
- 遍历输入字符串,依次判断每个字符:
- 如果字符为左括号 ('{'、'[' 或 '('),则将该字符入栈。
- 如果字符为右括号 ('}'、']' 或 ')'),则进行以下操作:
- 如果栈为空,则说明匹配失败,直接返回
false。 - 从栈顶弹出一个字符,并判断该字符是否与当前右括号匹配。如果匹配失败,则返回
false。
- 如果栈为空,则说明匹配失败,直接返回
- 遍历完整个字符串后,如果栈为空,则说明所有括号匹配成功,返回
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 著作权归作者所有。请勿转载和采集!