首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >力扣经典150题第五十一题:有效的括号

力扣经典150题第五十一题:有效的括号

作者头像
用户8589624
发布2025-11-13 16:11:53
发布2025-11-13 16:11:53
1040
举报
文章被收录于专栏:nginxnginx

题目描述和要求

给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。
示例解释

示例 1:

输入:s = “()” 输出:true

示例 2:

输入:s = “()[]{}” 输出:true

示例 3:

输入:s = “(]” 输出:false

解题思路

可以使用栈来解决这个问题。遍历字符串,遇到左括号则入栈,遇到右括号则出栈。如果当前右括号与栈顶的左括号不匹配,则字符串无效。最后,如果栈为空,则字符串有效,否则无效。

算法实现
代码语言:javascript
复制
import java.util.Stack;

public class ValidParentheses {
    public boolean isValid(String s) {
        if (s == null || s.length() == 0) {
            return true;
        }

        Stack<Character> stack = new Stack<>();
        for (char c : s.toCharArray()) {
            if (c == '(' || c == '[' || c == '{') {
                stack.push(c);
            } else {
                if (stack.isEmpty()) {
                    return false;
                }
                char top = stack.pop();
                if ((c == ')' && top != '(') || (c == ']' && top != '[') || (c == '}' && top != '{')) {
                    return false;
                }
            }
        }

        return stack.isEmpty();
    }
}
复杂度分析
  • 时间复杂度:O(n),其中 n 为字符串 s 的长度。遍历一次字符串。
  • 空间复杂度:O(n),最坏情况下栈的空间复杂度为 O(n)。
测试和验证

编写测试用例对算法进行验证,确保其正确性和健壮性。

代码语言:javascript
复制
public class Main {
    public static void main(String[] args) {
        ValidParentheses validParentheses = new ValidParentheses();

        String s1 = "()";
        System.out.println(validParentheses.isValid(s1)); // true

        String s2 = "()[]{}";
        System.out.println(validParentheses.isValid(s2)); // true

        String s3 = "(]";
        System.out.println(validParentheses.isValid(s3)); // false
    }
}
总结和拓展

本题通过使用栈来判断字符串中的括号是否有效,实现了对字符串有效性的判断。这个算法思路清晰简单,在处理类似问题时是一个不错的选择。

除了当前算法,我们也可以考虑其他实现方式,例如使用递归、正则表达式等方法来解决类似问题。

参考资料
  • 《力扣经典150题》
  • LeetCode 官方网站
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述和要求
    • 示例解释
    • 解题思路
    • 算法实现
    • 复杂度分析
    • 测试和验证
    • 总结和拓展
    • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档