首页 > 其他分享 >有效的括号(简单)

有效的括号(简单)

时间:2024-08-06 17:25:23浏览次数:7  
标签:map 匹配 括号 有效 简单 字符串 false stack

有效的括号

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

有效字符串需满足:

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

示例 1:

输入:s = “()”
输出:true
示例 2:

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

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

思想:

1.使用栈(Stack)数据结构:算法通过使用一个栈来处理括号的匹配。当遇到左括号时,将其压入栈中;当遇到右括号时,检查栈顶部的元素是否与之匹配。如果匹配,则从栈中弹出该左括号,继续遍历输入字符串;如果不匹配或者栈为空,则返回 false。

2.使用哈希映射(HashMap)存储括号对应关系:在代码中,使用 HashMap 存储左括号和右括号的对应关系。这样在检查括号匹配时,可以通过查询 HashMap 来确定对应的右括号。

3.遍历输入字符串:算法遍历输入的字符串,对于字符串中的每个字符执行以下操作:

  • 如果遇到左括号,将其压入栈中。
  • 如果遇到右括号,检查栈顶部元素是否与之匹配:如果匹配,弹出该左括号;如果不匹配或者栈为空,则返回 false。
  • 遍历完成后,检查栈是否为空,为空则说明所有括号都匹配,返回 true;否则说明括号未完全匹配,返回 false。
  • 最终返回是否栈为空:最后的返回值是检查栈是否为空,如果栈为空,则说明所有左括号都已经找到相匹配的右括号,括号序列有效;否则说明括号序列存在不匹配,返回 false。

这个算法的时间复杂度是O(n),其中n是输入字符串s的长度,因为算法需要遍历整个输入字符串一次。这个算法是一种常见的用栈解决括号匹配问题的经典算法。

题解

class Solution {
    public boolean isValid(String s) {
       Stack<Character> stack = new Stack<>();
       HashMap<Character,Character> map = new HashMap<>();
       map.put('(',')');
       map.put('{','}');
       map.put('[',']');

       for(char c:s.toCharArray())
       {
        if(map.containsKey(c))
        {
            stack.push(c);
        }
        else if(stack.isEmpty() || map.get(stack.peek())!=c)
        {
            return false;
        }
        else
        stack.pop();
       }

       return stack.isEmpty();
    }
}

标签:map,匹配,括号,有效,简单,字符串,false,stack
From: https://blog.csdn.net/2301_80011650/article/details/140961418

相关文章

  • WordPress 简单吗?
     是的,WordPress对于初学者来说非常简单易用。WordPress是一个开源的网站构建平台,专为简单性和用户友好性而设计,使其非常适合初学者和技术水平较低的用户。以下是几个使WordPress易于使用的原因:1.直观的用户界面:WordPress拥有一个干净且直观的界面,菜单和选项清晰易懂。......
  • 汇川EC总线伺服简单使用只要关注这几个参数就够了
    目录H02基本控制参数H03端子输入参数H04端子输出参数H09自调整参数这些参数都可以通过汇川的伺服调试软件,或者是伺服驱动器面板上的按键来进行设置H02基本控制参数H02-01绝对值系统选择根据当前系统选择是增量模式还是绝对值模式H02-02旋转方向选择选择......
  • 自注意力机制最简单的示例
    自注意力机制示例自注意力机制示例1.输入序列假设我们有一个简单的输入序列,包含三个词(向量表示),每个词的维度是4: x1x2x3x4词11010词20101词311112.查询(Q)、键(K)和值(V)矩阵我们定义查询、键和值的权重矩阵如下: QKV权重矩阵......
  • 作业管理是计算机科学中的一个重要领域,它主要关注如何高效、有效地管理和控制计算机系
    作业管理是计算机科学中的一个重要领域,它主要关注如何高效、有效地管理和控制计算机系统中的任务执行。作业管理不仅包括任务的调度和执行,还涉及到用户与计算机系统之间的交互方式,如界面管理、人机交互、图形界面、语音控制以及虚拟现实等技术。任务管理:这是作业管理的核......
  • 微信支付退款和退款结果查询接口简单实现(.Net 7.0)
    〇、前言相较于支付宝,微信支付对.Net的支持就没那么充分,官方没有提供SDK。但值得庆幸的是,在社区有大佬封装了v3版.NetSDK。原文链接:https://developers.weixin.qq.com/community/develop/article/doc/00020aadc384a0a5f01c3526b56813。SDK名称:SKIT.FlurlHttpClient.W......
  • 简单的mysqldump备份(windows)
    备份小数据库用mysql自带的mysqldump就可以完成备份,写一个简单的适用于windows下跑的脚本。策略每天凌晨1点全备,保留7天备份脚本dbbak.batsetday=%date:~0,4%%date:~5,2%%date:~8,2%setlocalip=xxx.xxx.xxx.xxxsetbackup_path=D:\dbbak\%localip%setbackup_dir=D:\dbb......
  • 简单的mysqldump备份(linux)
    备份小数据库用mysql自带的mysqldump就可以完成备份,写一个简单的适用于linux下跑的脚本。策略每天凌晨1点全备,保留7天备份脚本dbbak.sh#!/bin/bashexportPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:/root/bin:/usr/local/......
  • Plugin Boutique Scaler EQ V1.1.3_WIN-TCD&MAC-HCiSO(2024.08更新),持续更新长期有效
    一。PluginBoutiqueScalerEQ1.1.3WIN-TCD&MAC-HCiSO   紧随屡获殊荣的音乐理论插件Scaler之后,ScalerEQ以一种引人注目的全新方式提供了音乐性和色彩的均衡。ScalerEQ是PluginBoutique推出的一款创新均衡器插件,结合传统和和声均衡功能,专注于音乐理论,为音乐制作和混......
  • 简单设计一个JAVA并行处理工具类
    在工作中,我们肯定遇到过一个接口要处理N多事项导致接口响应速度很慢的情况,通常我们会综合使用两种方式来提升接口响应速度优化查询SQL,提升查询效率开启多线程并发处理业务数据这里讨论第二种方案:使用多线程并发处理业务数据,最后处理完成以后,拼装起来返回给前端,每个人的实现方......
  • Navicat 连接瀚高数据库(炒鸡简单)
    刚接到的项目领导让我去数据库建几张表,打开配置文件一看用的是国产的瀚高数据库:url:jdbc:highgo://192.168.8.4:5866/sdss_ns_bussiness?currentSchema=sdss_base这下就慌了,没用过啊!!用什么连接工具都不知道!!打开百度,csdn一阵搜索,不是不管用,让下载JDBC驱动,就是要......