当前位置: 首页 > article >正文

LeetCode 20 Valid Parentheses 有效的括弧 Java

题目:给定一个由 一系列括号 '(','{','[',')','}',']'组成的字符串,要求判断括号是否有效。

示例1:"()",有效

示例2:"{}[]([])",有效

示例3:"{[}]",无效。

解题思路:判断括弧是否有效的依据为,右括弧必须有对应的左括弧与之形成闭合,且顺序正确。所以此处我们可以用栈先进后出的特性进行解题。

1.当我们获取到左括弧时,将其压入栈中;

2.当我们获取到右括弧时,取最后进入栈中的左括弧进行配对,若配对失败则无效;此处需注意,如果栈中为空,证明没有左括弧与之形成配对,所以也是无效的括弧。

3.当我们遍历完所有括弧后,若栈为空,证明全部配对完成,是有效的括弧,反之无效。

代码:

class Solution {
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<Character>();

        //将字符串转成字符数组并遍历
        char[] chars = s.toCharArray();
        for (char c : chars) {

            //遇见左括弧,将其压入栈中
            if (c == '{' || c == '(' || c == '[') {
                stack.push(c);   
            }

            //遇见右括弧 
            else {
                //如果栈为空,证明没有左括弧可以与该右括弧配对
                if (stack.isEmpty()) {
                    return false;
                }
                
                //取栈中最后一个括弧与之配对
                char top = stack.pop();
                if (top == '(' && c != ')') {
                    return false;
                }
                if (top == '[' && c != ']') {
                    return false;
                }
                if (top == '{' && c != '}') {
                    return false;
                }
            }
        }

        //遍历完括弧后,若栈为空证明全部配对完成,是有效括弧,反之无效
        return stack.isEmpty();
    }
}


http://www.kler.cn/a/611959.html

相关文章:

  • 5款视觉OCR开源模型
  • 输入百分比校验(数字非负数保留2位不四舍五入)
  • c# 动态库重名冲突处理方法 (起别名)
  • 面试记录3
  • 深度学习查漏补缺:3.从 Sigmoid 到 GELU
  • 使用Hash和HTML5的History API实现前端路由
  • IIR(无限冲激响应)滤波
  • 爬虫面试题
  • 大模型tokenizer重构流程
  • 【初探数据结构】直接插入排序与希尔排序详解
  • 解决conda的R包安装的依赖问题-以tidyverse为例
  • UniApp 生命周期钩子的应用场景
  • 20250327解决在立创eda中铺了GND的铜之后仍显示部分地线未连接
  • 关于大模型中的Token概念小记
  • 江西核威环保科技:打造世界前沿的固液分离设备高新企业
  • browser-use 库安装指南
  • 【MyBatisPlus】MyBatisPlus介绍与使用
  • 什么是logback FixedWindowRollingPolicy的文件滚动策略?
  • 知识就是力量——物联网应用技术
  • Neo4j GDS-06-neo4j GDS 库中社区检测算法介绍