LeetCode20

 一个新手小白开始算法的学习之路,以后会不定期分享个人做完一些题目的笔记,使用语言为JavaScript

//声明一个名为isValid的函数,接收一个参数s(要检查的字符串)
let isValid = function(s) {//初始化栈//创建一个空数组stack,用来存储遇到的括号( (,{,[ )let stack = [];//开始遍历,i是索引号(从0开始,所以从length-1结束)for( let i=0;i<s.length;i++) {//将当前字符存储在变量start中(可能是任何类型的符号)const start = s[i];if( s[i] == '(' || s[i] == '{' || s[i] =='[' ){ //如果是开放字符( (,{,[ ),就压入栈stack.push( s[i] );//如果不是,则end获取栈顶元素(最后压入的开放括号)}else{const end = stack[ stack.length-1 ];if( start ==")" && end == '(' || start =="]" && end == '[' || start =="}" && end == '{' ){//若符合,则出栈stack.pop();}else{//如果闭合括号与栈顶开放括号不匹配:立即返回false,表示字符串无效return false;}}}//遍历完所有字符后:
//如果栈为空(stack.length == 0),说明所有开放括号都有匹配的闭合括号,返回true
//如果栈不为空,说明有未匹配的开放括号,返回falsereturn stack.length == 0;
};
let isValid = function(s) {let stack = [];for( let i=0;i<s.length;i++) {const start = s[i];if( s[i] == '(' || s[i] == '{' || s[i] =='[' ){stack.push( s[i] );}else{const end = stack[ stack.length-1 ];if( start ==")" && end == '(' ||start =="]" && end == '[' ||start =="}" && end == '{'){stack.pop();}else{return false;}}}return stack.length == 0;};

例子

这个函数就像是一个严格的"括号管家",专门检查你写的括号是否都正确配对。想象你在玩一个"开箱关箱"的游戏:

游戏规则

  1. 每次你打开一个箱子((, {, [),管家就会记在小本本(栈)上
  2. 每次你关闭一个箱子(), }, ]),管家就会:
    • 检查是否和最后一次打开的箱子匹配
    • 匹配就划掉最后一条记录
    • 不匹配就直接宣布游戏失败

分步情景模拟

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

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

相关文章

Spring Boot 自动配置:从 spring.factories 到 AutoConfiguration.imports 的演变

引言 Spring Boot 的自动配置机制是其【开箱即用】特性的核心支撑&#xff0c;通过减少显式配置和简化开发流程&#xff0c;显著提升了开发效率。随着 Spring Boot 版本的迭代&#xff0c;自动配置的实现机制也在不断优化。本文将深入解析 spring.factories 和 AutoConfigurat…

Redis7 底层数据结构解析

Redis底层数据结构深度解析&#xff08;基于Redis 7.2.5&#xff09;本文深入剖析Redis核心数据类型的底层实现机制&#xff0c;涵盖String、Hash、List、Set、Zset的实现原理及版本演进差异。一、Redis数据存储核心机制 Redis所有数据以redisObject结构统一封装&#xff1a; t…

《C++初阶之STL》【auto关键字 + 范围for循环 + 迭代器】

【auto关键字 范围for循环 迭代器】目录前言&#xff1a;--------------- auto关键字 ---------------1. 什么是auto&#xff1f;2. 使用关键字auto时需要注意什么&#xff1f;3. 怎么使用auto关键字&#xff1f;--------------- 范围for循环 ---------------1. 什么是范围fo…

ionic 切换开关操作指南

ionic 切换开关操作指南 引言 在移动应用开发中&#xff0c;切换开关&#xff08;Toggle&#xff09;是一种常见的用户界面元素&#xff0c;它允许用户通过简单的操作来开启或关闭某个功能或设置。在Ionic框架中&#xff0c;切换开关提供了丰富的API和样式&#xff0c;使得开发…

【笔记记录-Linux文件权限与目录结构详解】

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录目录结构解析Summarypart3part4part5目录结构解析 drwxr-xr-x 2 student student 4096 10月 8 2023…

【Complete Search】-基础完全搜索-Basic Complete Search

文章目录Solution - Maximum Distance涉及遍历整个解空间的问题资料-resources 6 - Complete Search 在很多问题中&#xff08;尤其是在 USACO Bronze 级别&#xff09;&#xff0c;只需检查解空间中的所有可能情况就足够了&#xff0c;比如所有元素、所有元素对、所有子集&…

神经网络的层与块

什么是层&#xff1f;什么是块&#xff1f;在深度学习中&#xff0c;层&#xff08;Layer&#xff09; 和块&#xff08;Block&#xff09; 是构建神经网络的核心概念&#xff0c;尤其在 PyTorch、TensorFlow 等框架中&#xff0c;二者既紧密关联又有明确分工。理解它们的定义、…

如何用Qt写一个安卓Android应用

对于不会安卓开发的同胞来讲(比如我)&#xff0c;想要做一个安卓应用(.apk)使用Qt是一个不错的方法&#xff0c;今天就来聊聊如何使用Qt结合C写一个安卓应用。 首先我们得拥有一个Qt,我使用的是5.14.2版本的&#xff0c;新版本可直接到qt官网去下载qt.io,老版本的现在qt官网不支…

泰语OCR识别技术方案

一、痛点分析1.1 泰语文字特性带来的挑战复杂字符集&#xff1a;泰语有44个辅音字母、15个元音符号、4个声调符号和10个数字&#xff0c;组合形式多样上下叠加结构&#xff1a;泰文字符常在垂直方向叠加组合&#xff0c;增加分割难度无词间空格&#xff1a;泰语单词间无明确分隔…

MER-Factory:多模态情感识别与推理数据集自动化工厂工具介绍

&#x1f6e0;️ 工具 如果这个项目对你有帮助&#xff0c;欢迎给 https://github.com/Lum1104/MER-Factory/ 仓库点一个 Star &#x1f31f; &#xff0c;这对我们帮助很大 MER-Factory 提供交互式工具来帮助您管理数据和配置处理流水线。 调优仪表板 调优仪表板 是一个基…

Python基础数据结构详解:字符串、列表、元组和字典的常用方法

目录 一、引言&#xff1a;为什么学习这些数据结构&#xff1f; 二、字符串&#xff08;String&#xff09;的常用方法 1. 基本操作 2. 查找索引 3. 大小写转换 4. 位置调整 5. 开头和结尾检查 6. 分割和连接 7. 删除空白字符 8. 类型判定 9. 替换内容 字符串小结 …

Liunx练习项目5.1-周期化任务;时间同步服务;

1.系统周期化任务1.1 at命令的用法at 时间 指定在规定的时间上执行相应的操作&#xff0c;完成操作crtlD完成编辑一分钟后输入的指令完成&#xff0c;创建了file{1..5}的文件at -l 查看系统上面所有用户的调度at -c 可以查看该任务的指令at -d 加编号可以删除该任务at -v 可以…

小皮面板搭建pikachu靶场

一、搭建所需的工具 1.下载小皮面板 下载地址为&#xff1a;小皮面板(phpstudy) - 让天下没有难配的服务器环境&#xff01; 2.下载靶场所需的文件 下载地址为&#xff1a;https://github.com/zhuifengshaonianhanlu/pikachu 二、环境的搭建 打开小皮面板&#xff0c;使用所…

使用aiohttp实现高并发爬虫

使用aiohttp来编写一个高并发的爬虫&#xff0c;想法很不错&#xff0c;现实很骨感。这里我们要知道&#xff0c;由于高并发可能会对目标服务器造成压力&#xff0c;请确保遵守目标网站的robots.txt&#xff0c;并合理设置并发量&#xff0c;避免被封IP。 我将通过示例代码&…

【Linux庖丁解牛】— 信号量ipc管理!

1. 并发编程概念铺垫> 多个执行流【进程】看到同一份资源&#xff1a;共享资源。> 被保护起来的资源叫做临界资源。> 在进程中&#xff0c;涉及临界资源的程序段叫做临界区。【说人话就是程序中访问共享资源的代码】> 什么是互斥&#xff1a;任何时刻&#xff0c;只…

Spring Boot全局异常处理详解

原代码&#xff1a;package com.weiyu.exception;import com.weiyu.pojo.Result; import com.weiyu.utils.ErrorFileResponseUtils; import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import …

FHE技术将彻底改变在线隐私保护方式

1. 在线隐私的简史 互联网刚刚诞生时&#xff0c;所有的内容都是未加密的。人们通过一个特定的地址访问网站&#xff0c;这个地址以“HTTP”开头。当时&#xff0c;这并不是什么大问题&#xff0c;因为人们在线访问的都是内容&#xff0c;而这些内容本身已经是公开的。但随着电…

Cursor配置Java环境、创建Spring Boot项目

一&#xff1a;配置JDK和Maven cursor默认会读取环境变量JAVA_HOME和MAVEN_HOME&#xff0c;如果没有配置去找默认路径~/.m2/settings.xml也可以手动指定&#xff1a;Ctrl Shift P 输入"Preferences:Open User Settings(JSON)"打开settings.json文件&#xff0c;然…

win11添加无线显示器(两个笔记本实现双屏)

前置条件&#xff1a; 两个笔记本要要支持无线显示器&#xff0c;支持蓝牙&#xff1b; 1、自己重装的win11系统&#xff0c;首先根据网上说明进去的时候&#xff0c;红色显示无无线投屏&#xff1b; 2、安装网上操作&#xff0c;查看自己电脑是否支持无线投屏&#xff08;是支…

【MAC技巧】Bash/Zsh切换失败的故障排除

【MAC技巧】Bash/Zsh切换失败的故障排除 Troubleshooting to Failure " chsh: no changes made" By JacksonML 在Mac电脑中&#xff0c;终端(Terminal)是常用的命令行工具&#xff0c;对开发和运维至关重要。 依照苹果电脑的系统软件迭代&#xff0c;终端中存有B…