博客
关于我
leetcode做题记录0020
阅读量:349 次
发布时间:2019-03-04

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

为了解决这个问题,我们需要判断给定的括号字符串是否正确匹配。我们可以使用栈来解决这个问题,因为栈非常适合处理嵌套结构。

思路

  • 初始化栈:使用一个栈来记录括号的位置。
  • 遍历字符串:逐个字符处理字符串中的每个字符。
    • 遇到左括号'(',将其推入栈。
    • 遇到右括号')',检查栈顶是否是左括号'(':
      • 如果栈为空,说明没有对应的左括号,返回false。
      • 如果栈顶不是左括号,说明括号不匹配,返回false。
  • 处理循环结束:遍历结束后,栈中如果还有元素,说明有多余的左括号,返回false。
  • 返回结果:如果所有括号都正确匹配且栈为空,返回true。
  • 代码

    import java.util.LinkedList;public class Solution {    public boolean isValid(String s) {        if (s.length() == 0) {            return true;        }        LinkedList
    stack = new LinkedList<>(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c == '(') { stack.add(c); } else if (c == ')') { if (stack.isEmpty() || stack.pop() != '(') { return false; } } } return stack.isEmpty(); }}

    解释

    • 初始化栈:使用LinkedList来模拟栈,因为它可以动态增长和缩短,非常适合这个问题。
    • 遍历字符串:逐个字符处理字符串,处理左括号和右括号,右括号则检查栈顶是否为左括号。
    • 处理循环结束:检查栈是否为空,栈不为空则说明有多余的左括号。
    • 返回结果:根据栈的状态返回是否正确匹配。

    转载地址:http://erhe.baihongyu.com/

    你可能感兴趣的文章
    node防xss攻击插件
    查看>>
    noi 1996 登山
    查看>>
    noi 7827 质数的和与积
    查看>>
    NOI-1.3-11-计算浮点数相除的余数
    查看>>
    noi.ac #36 模拟
    查看>>
    NOI2010 海拔(平面图最大流)
    查看>>
    NOIp2005 过河
    查看>>
    NOIP2011T1 数字反转
    查看>>
    NOIP2014 提高组 Day2——寻找道路
    查看>>
    noip借教室 题解
    查看>>
    NOIP模拟测试19
    查看>>
    NOIp模拟赛二十九
    查看>>
    Vue3+element plus+sortablejs实现table列表拖拽
    查看>>
    Nokia5233手机和我装的几个symbian V5手机软件
    查看>>
    non linear processor
    查看>>
    Non-final field ‘code‘ in enum StateEnum‘
    查看>>
    none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
    查看>>
    None还可以是函数定义可选参数的一个默认值,设置成默认值时实参在调用该函数时可以不输入与None绑定的元素...
    查看>>