Java 括号匹配算法实现:判断字符串中括号是否匹配
使用 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
}
代码解析
-
isMatch(String str) 方法:
- 创建一个栈
stack来存储左括号。 - 遍历字符串
str中的每个字符c:- 如果
c是左括号,则将其压入栈顶。 - 如果
c是右括号,则检查栈是否为空。如果为空,则说明匹配失败,直接返回false。 - 否则,弹出栈顶元素
top,判断c和top是否匹配。如果不匹配,则返回false。
- 如果
- 如果遍历完字符串后,栈为空,则说明所有括号都匹配了,返回
true。
- 创建一个栈
-
main(String[] args) 方法:
- 定义三个测试字符串
str1,str2,str3,分别代表匹配、不匹配、不匹配的场景。 - 使用
isMatch方法判断每个字符串的括号是否匹配,并输出结果。
- 定义三个测试字符串
总结
本文介绍了使用 Java 算法判断字符串中括号匹配的实现方法。该算法简洁高效,易于理解,可以应用于各种需要判断括号匹配的场景,例如代码语法检查、表达式解析等。
原文地址: https://www.cveoy.top/t/topic/oWKu 著作权归作者所有。请勿转载和采集!