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
英文地址,請注明出處:http://en.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…