第十六天算法设计

Stack 类:
我们首先使用栈来存储左括号,然后在遍历字符串时遇到右括号时,弹出栈顶的左括号进行匹配。

java
package suanfa;

import java.util.Stack;

public class BracketMatcher {
// 判断括号是否匹配
public static boolean isValid(String s) {
Stack stack = new 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

posted @   申shen  阅读(1)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示