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

第423题-有效的括号序列

描述

给定一个字符串所表示的括号序列,包含以下字符: '('')''{''}''[' 和 ']', 判定是否是有效的括号序列,有效括号序列满足以下条件:

  • 左括号必须用相同类型的右括号闭合
  • 左括号必须以正确的顺序闭合
  • 每个右括号都有一个对应的相同类型的左括号

样例 1:

输入:
s = "([)]"
输出:
False

样例 2:

输入:
s = "(){}[]"
输出:
True

样例 3:

输入:
s = "({})"
输出:
True

样例 4:

输入:
s = "({[()]})"
输出:
True

代码如下:

 

public class Solution {

    /**

     * @param s: A string

     * @return: whether the string is a valid parentheses

     */

    public boolean isValidParentheses(String s) {

        // write your code here

         // 使用栈来匹配括号

        Stack<Character> strStack = new Stack<>();

        int n = s.length();

        boolean matchFlag = true;

        // 遍历字符串

        for (int i = 0; i < n; i++) {

            char currentChar = s.charAt(i);

            // 左括号入栈

            if (currentChar == '('||currentChar=='['||currentChar=='{') {

                strStack.push(currentChar);

            }

            // 右括号检查栈顶

            else if (currentChar == ')'||currentChar==']'||currentChar=='}') {

                if(strStack.isEmpty())//出现左括号不够的情况

                {

                    return false; // 没有匹配的左括号

                }else

                {

                 Character popCharacter=  strStack.pop();

                 if(!match(popCharacter,currentChar))

                 {

                     return false;

                 }

                }

                // 栈顶必须是左括号

            }

        }

       if(!strStack.isEmpty())//出现只有左括号的情况

       {

           return false;

       }else

       {

           return true;

       }

    }

    boolean match(Character A,Character B)

    {

        if(A=='{'&&B=='}')

        {

            return true;

        }else if(A=='['&&B==']')

        {

            return true;

        }else if(A=='('&&B==')')

        {

            return true;

        }else

        {

            return false;

        }

    }

}

 

http://www.xdnf.cn/news/4945.html

相关文章:

  • 大模型——Trae IDE 指南:轻松配置自定义 AI 规则 (Trae Rules)
  • 阅文集团C++面试题及参考答案
  • 服务器配置错误导致SSL/TLS出现安全漏洞,如何进行排查?
  • 汽车制造行业的数字化转型
  • 华为云Flexus+DeepSeek征文|从开通到应用:华为云DeepSeek-V3/R1商用服务深度体验
  • 【软件设计师:存储】16.计算机存储系统
  • gitlab相关面试题及答案
  • 深入了解 Stable Diffusion:AI 图像生成的奥秘
  • 【论文阅读】——Articulate AnyMesh: Open-Vocabulary 3D Articulated Objects Modeling
  • 聚焦车辆模式管理:概念阐释、测试方案设计与实施
  • 代码随想录第40天:图论1
  • Vue3.5 企业级管理系统实战(十八):用户管理
  • 回顾 Vue 3 基础【Plan - May - Week 1】
  • 零基础学Java——第十一章:实战项目 - 控制台应用开发
  • 力扣-2.两数相加
  • WPF内嵌其他进程的窗口
  • 鸿蒙NEXT开发动画案例5
  • tomcat6性能优化
  • MySQL 数据库操作
  • uniapp小程序轮播图高度自适应优化详解
  • 使用Python 打造多格式文件预览工具 — 图、PDF、Word、Excel 一站式查看
  • Java SE(10)——抽象类接口
  • 高效C/C++之十:Coverity修复问题:尽量多使用 c++强制类型转化
  • 人工智能之数学基础:二次型
  • 内网渗透——红日靶场三
  • HOT 100 | 【子串】76.最小覆盖子串、【普通数组】53.最大子数组和、【普通数组】56.合并区间
  • AI与计算机视觉(CV):目标检测与图像分割的最新进展
  • 行业 |四大痛点待破:“拆解”DeepSeek一体机
  • 英伟达Blackwell架构重构未来:AI算力革命背后的技术逻辑与产业变革
  • 【强化学习】动态规划(Dynamic Programming, DP)算法