第十六天算法设计
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
浙公网安备 33010602011771号