20 有效的括号(栈的使用)
发布日期:2021-05-07 21:50:05 浏览次数:22 分类:精选文章

本文共 1542 字,大约阅读时间需要 5 分钟。

为了判断给定的括号字符串是否有效,我们可以使用栈来跟踪括号的匹配情况。栈的基本思想是,每当遇到一个左括号时将其推入栈,遇到右括号时检查栈顶部是否是对应的左括号,如果是则弹出栈,否则字符串无效。遍历完整个字符串后,栈是否为空即可判断字符串是否有效。

思路分析

  • 问题描述:有效字符串需满足左括号必须用相同类型的右括号闭合,且左括号必须以正确的顺序闭合。空字符串可被认为是有效的。

  • 解决思路:使用栈来跟踪括号匹配情况。遍历字符串中的每个字符,如果遇到左括号推入栈,遇到右括号检查栈顶是否是对应的左括号,如果是则弹出栈,否则返回false。最后检查栈是否为空。

  • 代码实现:通过遍历字符串,使用栈结构处理每个字符,确保括号匹配正确。最终判断栈是否为空来确定字符串的有效性。

  • 代码

    public class Solution {    public static boolean isValid(String s) {        if (s.length() == 0) {            return true;        }        Stack
    stack = new Stack<>(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c == '(' || c == '{' || c == '[') { stack.push(c); } else if (c == ')') { if (stack.isEmpty() || stack.peek() != '(') { return false; } stack.pop(); } else if (c == '}') { if (stack.isEmpty() || stack.peek() != '{') { return false; } stack.pop(); } else if (c == ']') { if (stack.isEmpty() || stack.peek() != '[') { return false; } stack.pop(); } } return stack.isEmpty(); }}

    代码解释

  • 空字符串处理:如果输入字符串为空,直接返回true,空字符串被认为是有效的。

  • 初始化栈:使用栈来存储遇到的左括号,栈的作用是帮助我们跟踪每个左括号的位置和类型。

  • 遍历字符串:逐个字符遍历字符串,处理每个字符的类型:

    • 左括号('(', '{', '['):将字符推入栈。
    • 右括号(')', '}', ']'):检查栈顶是否是对应的左括号,如果是则弹出栈,否则返回false。
  • 最终检查:遍历完字符串后,栈是否为空判断字符串的有效性。如果栈不为空,说明存在未闭合的括号,返回false;栈为空则返回true。

  • 这种方法确保了括号的正确匹配和顺序,能够有效判断字符串的有效性。

    上一篇:752 打开转盘锁(宽搜)
    下一篇:71 简化路径(模拟、栈)

    发表评论

    最新留言

    路过按个爪印,很不错,赞一个!
    [***.219.124.196]2025年03月25日 03时05分51秒