力扣-20 有效的括号详解 Java

目录

1.题目分析

2.基础知识储备

2.1 哈希表 

2.2 栈的存取

3. 逻辑概要

4.源码 示例


1.题目分析

为了对比都是从内而外,一个个匹配,全部匹配成功即为有效字符

2.基础知识储备

2.1 哈希表 

简单来说,key+value存储 ,通过key能找到对应value值

这里 可以将 一边括号 存为key  ,另一边存为 value ,建立二者联系,便于匹配比较

 Map<Character,Character> pairs = new HashMap<Character,Character>(){{put('}','{');put(')', '(');put(']','[');}};

2.2 栈的存取

调用已定义好的Stack类,控制符号的进出

  Stack stack = new Stack();stack.isEmpty();stack.peek();stack.pop();stack.push(ch);

3. 逻辑概要

‘{ ’匹配 ‘}’, 左边括号入栈 存放,后边括号就要来比较

                 (1)栈的先入后出特性  正好帮我们由内到外比较符号对应问题

                 (2)哈希表的key-value正好帮助我们为符号匹配提供参考依据  

                 (3) 判断整个式子是不是正确的,那么过程中有问题直接return false或抛异常,

如果所有字符都看完了,最后都没问题,一定要检查栈内【防止'{{'出现】,栈空才为 ture

4.源码 示例

import java.util.Deque;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Stack;public class Solution {public boolean isValid(String example){int length = example.length();//条件一,单数的不要if (length%2 == 1) {return false;}//左括号入栈,右括号就比较Map<Character,Character> pairs = new HashMap<Character,Character>(){{put('}','{');put(')', '(');put(']','[');}};// Deque<Character> stack = new LinkedList<>();Stack stack = new Stack();//开始逐个提取字符for(int i = 0 ; i<length ; i++){char ch = example.charAt(i);if (pairs.containsKey(ch)) {if (stack.isEmpty() || pairs.get(ch) != stack.peek()) {return false;}// 以stack.pop();}else{stack.push(ch); }}//一定栈空了才可以算匹配成功return stack.isEmpty();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/564792.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的世界Linux MCSM+Mohist服务端部署

前言 最近玩MC自己整合了一个新包&#xff0c;玩起来很舒服。但是有时会有朋友一起来玩&#xff0c;加上我自己玩的客服端上加了光影&#xff0c;对电脑负载有点大。所以想做个服务器&#xff0c;减小一下我电脑的负载。顺便写篇文章记录一下部署过程。 环境要求 服务器部署要…

政安晨:【深度学习实践】【使用 TensorFlow 和 Keras 为结构化数据构建和训练神经网络】(五)—— Dropout和批归一化

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; Dropout和批归一化是深度学习领域中常用的正则化技术…

【CDA二级数据分析备考思维导图】

CDA二级数据分析备考思维导图 CDA二级复习备考资料共计七个章节&#xff0c;如需资料&#xff0c;请留言&#xff0c;概览如下图&#xff1a;一、数据采集与处理1.数据采集方法2.市场调研和数据录入3、数据探索与可视化4、数据预处理方法 总结&#xff1a;以上为自己学习数据分…

pytorch中tensor类型转换的几个函数

目录 IntTensor转FloatTensor FloatTensor转IntTensor Tensor类型变为python的常规类型 IntTensor转FloatTensor .float函数&#xff1a; FloatTensor转IntTensor .int函数 Tensor类型变为python的常规类型 item函数

STM32学习笔记(5_2)- EXTI外部中断代码

无人问津也好&#xff0c;技不如人也罢&#xff0c;都应静下心来&#xff0c;去做该做的事。 最近在学STM32&#xff0c;所以也开贴记录一下主要内容&#xff0c;省的过目即忘。视频教程为江科大&#xff08;改名江协科技&#xff09;&#xff0c;网站jiangxiekeji.com 本期介…

19.严丝合缝的文明——模板方法模式详解

“项目评审的节点又快到了&#xff0c;PPT你写了没&#xff1f;” “Oops&#xff0c;忘了&#xff0c;有模板没&#xff1f;给我一份” 概述 模板&#xff0c;一个频繁出现在办公室各类角色口中的词&#xff0c;它通常意味着统一、高效、经验和优质。各项汇报因为PPT的模板变…

鸿蒙网络开发学习:【ylong_http】

简介 ylong_http 构建了完整的 HTTP 能力&#xff0c;支持用户使用 HTTP 能力完成通信场景的需求。 ylong_http 使用 Rust 编写&#xff0c;为 OpenHarmony 的 Rust 能力构筑提供支持。 ylong_http 在 OpenHarmony 中的位置 ylong_http 向 OpenHarmony 系统服务层中的网络协…

初探Flink集群【持续更新】

周末下雨&#xff0c;倒杯茶&#xff0c;在家练习Flink相关。 开发工具&#xff1a;IntelliJ Idea 第一步、创建项目 打开Idea&#xff0c;新建Maven项目&#xff0c;包和项目命名 在pom.xml 文件中添加依赖 <properties><flink.version>1.13.0</flink.vers…

通过dbeaver链接dm8数据库

一、环境说明 windows 11 vmware 17 ubuntu 22 tt:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.3 LTS Release: 22.04 Codename: jammytt:~$ docker info Client:Version: 24.0.5Context: d…

2024/03/24----Pycharm社区版本下载以及创建一个新项目

1.本科安装过这个软件&#xff0c;因为系统重置了&#xff0c;所以重头再来一遍。 2.链接 社区版本Pycharm 3.我下载了2023.1.15的版本&#xff0c;越前面一些的版本可能会比较稳定 4.安装步骤 &#xff08;1&#xff09;先把文件安装目录改成其他盘(文件名最好不要有数字和符号…

react native 键盘事件

在做修改密码功能是发现他的键盘第一次调起之后然后收起键盘焦点不会消失而且键盘也不会再调起来了 我门线引入需要的组件 import { StyleSheet, View, TextInput, Keyboard, TouchableWithoutFeedback, } from react-native; import React, {useEffect, useState, useRef} fr…

k8s笔记27--快速了解 k8s pod和cgroup的关系

k8s笔记27--快速了解 k8s pod和 cgroup 的关系 介绍pod & cgroup注意事项说明 介绍 随着云计算、云原生技术的成熟和广泛应用&#xff0c;K8S已经成为容器编排的事实标准&#xff0c;学习了解容器、K8S技术对于新时代的IT从业者显得极其重要了。 之前在文章 docker笔记13–…