第十六天算法设计
Stack 类:
我们首先使用栈来存储左括号,然后在遍历字符串时遇到右括号时,弹出栈顶的左括号进行匹配。
java
package suanfa;
import java.util.Stack;
public class BracketMatcher {
// 判断括号是否匹配
public static boolean isValid(String s) {
Stack
// 遍历字符串中的每个字符
for (char c : s.toCharArray()) {
// 遇到左括号,入栈
if (c == '(' || c == '{' || c == '[') {
stack.push(c);
}
// 遇到右括号,进行匹配
else if (c == ')' || c == '}' || c == ']') {
// 栈为空,表示没有左括号可以匹配
if (stack.isEmpty()) {
return false;
}
// 弹出栈顶的左括号进行匹配
char top = stack.pop();
if (!isMatchingPair(top, c)) {
return false;
}
}
}
// 最后栈应该为空,表示所有的左括号都被匹配
return stack.isEmpty();
}
// 判断是否是匹配的括号对
private static boolean isMatchingPair(char left, char right) {
return (left == '(' && right == ')') ||
(left == '{' && right == '}') ||
(left == '[' && right == ']');
}
}
BracketMatcherTest 类:
在 BracketMatcherTest 类中,我们可以进行一些测试,看看括号是否匹配。
java
package suanfa;
public class BracketMatcherTest {
public static void main(String[] args) {
String test1 = "({[]})";
String test2 = "([)]";
String test3 = "{[()]}";
String test4 = "{[(])}";
String test5 = "((()))";
System.out.println(test1 + " 是否匹配: " + BracketMatcher.isValid(test1));
System.out.println(test2 + " 是否匹配: " + BracketMatcher.isValid(test2));
System.out.println(test3 + " 是否匹配: " + BracketMatcher.isValid(test3));
System.out.println(test4 + " 是否匹配: " + BracketMatcher.isValid(test4));
System.out.println(test5 + " 是否匹配: " + BracketMatcher.isValid(test5));
}
}
录制: untitled2 – Insertion.java
录制文件:https://meeting.tencent.com/crm/KzGGkGE85d
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)