每天一道leetcode:20.有效的括號(簡單;棧的經典題目)

?今日份題目

給定一個只包括 '('')''{''}''['']' 的字符串 s ,判斷字符串是否有效。

有效字符串需滿足:

  1. 左括號必須用相同類型的右括號閉合。

  2. 左括號必須以正確的順序閉合。

  3. 每個右括號都有一個對應的相同類型的左括號。

示例1

輸入:s = "()"
輸出:true

示例2

輸入:s = "()[]{}"
輸出:true

示例3

輸入:s = "(]"
輸出:false

提示

  • 1 <= s.length <= 104

  • s 僅由括號 '()[]{}' 組成

?題目思路

這里還是提取一下題目的特征點:

  • 閉合

  • 按順序

  • 每個左(右)對應一個右(左)

先考慮明面上的錯誤情況:

  • 只有左(右)

  • 左右不對應

解題思路是使用,棧的特點是先進后出,完全符合該模式。?基本過程是:當我們遇到左括號時,將其壓入棧;遇到右括號時,從棧中取出一個符號看是否配對就好

深入來看,還要考慮括號嵌套問題,不需要擔心當前右括號需要跨越幾個正常的括號組才能找到左括號的問題,如 " { [ ] ) " ,因為,正常的括號組一定早已經經歷了配對,所以每次只需要判斷棧頂的是否是對應的左括號就好。

該題目是棧相關的簡單、經典題目,初學的同學們可以多看幾遍,多做幾次。

?stack補充知識

這里再簡單補充一下STL中stack的使用方法。

棧是先進后出,后進先出的數據結構,使用方法主要包括:

//聲明
stack<int> s;
//指定底層容器的棧
stack<int,vector<int> > s;
//入棧
s.push(1);
//訪問棧頂
s.top();
//從棧頂清除一個元素(只能從棧頂清除)
s.pop();
//判斷棧中是否還有元素
s.empty();//無元素的話,empty函數會返回true
//判斷棧的元素數量
s.size();
?
//清空棧中的元素
for(int i=s.size();i;i--) s.pop();

?代碼

class Solution 
{
public:bool isValid(string s) {stack<char> p;for(int i=0;i<s.size();i++){if(s[i]=='('||s[i]=='['||s[i]=='{') p.push(s[i]);else if(s[i]==')'){if(p.empty()) return false;char cur=p.top();p.pop();if(cur!='(') return false;       }else if(s[i]==']'){if(p.empty()) return false;char cur=p.top();p.pop();if(cur!='[') return false;       }else if(s[i]=='}'){if(p.empty()) return false;char cur=p.top();p.pop();if(cur!='{') return false;       }}if(!p.empty()) return false;return true;}
};

提交結果

我的代碼的內存消耗還有待改進,歡迎大家提供更高效的代碼,如果過后有更優化的思路我還會繼續更新的,大家評論區見!

點贊收藏不迷路?~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719800.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719800.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719800.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Nano 33 BLE Sense Rev2學習第一節——環境配置

參考文檔見Access Barometric Pressure Sensor Data on Nano 33 BLE Sense | Arduino Documentation 打開Arduino ide安裝開發板 選擇開發板 連接開發板到電腦&#xff0c;自動識別開發板端口&#xff0c;選擇端口

Python-類型檢查:typing模塊和mypy工具

Python-類型檢查&#xff1a;typing模塊和mypy工具 >>返回Python系列文章目錄<< 文章鏈接: Python中typing模塊 文章鏈接: PyCharm集成類型檢查mypy

ssh 一次執行多條命令(后臺運行)

文章目錄 1. 背景2. 命令2.1 命令分隔符2.2 多行腳本2.3 單行腳本 3. SSH 任務后臺運行 1. 背景 有時我們只需要遠程執行一次任務然后就關閉&#xff0c;而不需要長時間 ssh 登錄到遠程服務器。同時一次任務可能需要執行多條命令&#xff0c;那么我們該如何做呢&#xff1f; …

【Java】查看class文件的jdk編譯版本的兩種方式

一、使用文本編輯工具EditPlus 使用EditPlus打開該class文件&#xff0c;字符集選擇16進制&#xff08;Hex viewer&#xff09;。 僅看第一行數據&#xff0c;前面8個字節CA FE BA BE是固定的。 之后4個字節00 00 是次版本。 次版本后面的4個字節00 34 就是jdk版本。 jdk版本…

torch中的sort用法|torch.sort

今天在學習代碼時&#xff0c;發現有些深度學習的項目中使用到torch.sort()函數&#xff0c;在此記錄一下&#xff0c;方便自己的查閱. torch.sort() 官網給出了非常詳細的介紹&#xff0c;但是為了更進一步掌握這一用法&#xff0c;在此記錄一下。 具體官網鏈接如下&#xf…

華為認證HCIP報名條件有哪些?考試要求介紹

華為HCIP認證是很多網絡工程師的考證首選&#xff0c;尤其對于剛入行不久的網絡工程師們來說&#xff0c;這個證書無論是從難度出發還是從含金量出發&#xff0c;都是值得一考的。 那么如果想報名華為HCIP認證有哪些條件以及考試要求&#xff0c;華為HCIP的報名需不需要通過機…

鏡頭畸變模型及去畸變的原理

1. OpenCV去畸變undistortPoints原理解析 Opencv中鏡頭畸變包含了徑向畸變和切向畸變&#xff0c;本章節主要闡述鏡頭畸變模型以及去畸變的原理。 1.1 鏡頭畸變模型 參考opencv文檔 https://docs.opencv.org/3.1.0/d4/d94/tutorial_camera_calibration.html&#xff0c;opencv…

基于SpringBoot+MYSQL的醫護人員排班系統

基于springboot的醫護人員排班系統錄像 1、 前言介紹 隨著信息技術在管理上越來越深入而廣泛的應用&#xff0c;管理信息系統的實施在技術上已逐步成熟。本文介紹了醫護人員排班系統的開發全過程。通過分析醫護人員排班系統管理的不足&#xff0c;創建了一個計算機管理醫護人員…

LSA頭部結構簡述

LSA&#xff08;Link State Advertisement&#xff09;是一種用于路由協議頭部結構&#xff0c;用于在網絡中傳遞路由信息。 LSA頭部結構包含以下幾個字段&#xff1a; 1、LSA類型&#xff08;LSA Type&#xff09;&#xff1a;指示LSA的類型&#xff0c;不同類型的LSA用于傳遞…

Rabbitmq消息丟失-消費者消息丟失(二)

說明&#xff1a;消費端在處理消息的過程中出現異常&#xff0c;例如&#xff1a;業務邏輯異常&#xff0c;或者消費者被停機&#xff0c;或者網絡斷開連接等&#xff0c;以上等情況使消息沒有得到正確恰當的處理&#xff0c;也會使消息丟失。 分析&#xff1a;分析就是說明中…

Composer基礎使用 SDK包初始化

Composer 的工作原理 我們在使用 Composer 之前我們得了解一下它的實現原理&#xff0c;它主要由三個部分組成&#xff1a;命令行工具、包倉庫、代碼庫&#xff1a; Packagist 它是官方倉庫&#xff0c;也就是我們平常說的 Composer 源&#xff0c;它的作用是存儲這些包的信息…

參數引入和全局變量引入實現-目標和

LCR 102. 目標和 - 力扣&#xff08;LeetCode&#xff09; 分析題意&#xff0c;畫出決策樹&#xff0c;其他的思路都跟前面講過的類似&#xff1a; 全局變量引入實現&#xff1a; 全局變量的引入&#xff0c;需要手動處理回溯&#xff1b; class Solution {int ret; //…

從0到1全流程使用 segment-anything

從0到1全流程使用 segment-anything 一、安裝 anaconda 一、下載 anaconda 二、以管理員身份運行安裝 1、勾選 Just Me 2、統一安裝路徑(后續 python 等包也安裝至此目錄) 3、勾選 add to path 然后安裝即可。 三、修改 Anaconda 默認路徑及默認緩存路徑 Anaconda 默認下…

K8S集群誤刪master節點,master節點恢復完美解決

問題描述&#xff1a; 在單節點的master節點k8s集群中不小心誤刪了master節點導致集群不可用。 多節點應的恢復方式同樣也適用。 解決方案&#xff1a; 兩條命令解決master節點恢復&#xff0c;而不是去重裝k8s集群。 執行下面命令&#xff0c;生成節點的join命令 kubeadm t…

藍橋杯 9241.飛機降落

這道題本來作者以為是可以用一些小技巧進行暴力解法的&#xff0c;但是后來試了一下&#xff0c;不能過去全部數據。 下面是對半個的題解&#xff1a; #include<iostream> #include<stdio.h> #include<cstring> #include<cstdlib> #include<cmath…

掌握 Python: 每個開發人員都應該知道的6個秘密技巧

無論你是一名經驗豐富的開發者還是剛踏入編程世界的新手&#xff0c;Python 很可能已經引起了你的興趣。 它功能強大、靈活多變&#xff0c;而且非常用戶友好&#xff01;但是&#xff0c;讓我們更進一步吧! 在這篇博客中&#xff0c;我將揭示一些隱藏的 Python 技巧&#xff0…

#QT(DEMO)

1.IDE&#xff1a;QTCreator 2.實驗&#xff1a;打印"hello wolrd" 3.記錄 &#xff08;1&#xff09;創建一個新工程&#xff1a; 新建好一個工程存放文件夾&#xff08;路徑不能有中文&#xff09;,然后按下圖配置 &#xff08;2&#xff09;點擊widgets.ui拖入以…

AIGC時代,程序員副業的必修課【提供免費指導,手把手實踐】

給自己的新課做個宣傳&#xff0c;限時6折&#xff0c;感興趣的可以聽一聽&#xff0c;完全干貨。提供課程購買訂單&#xff0c;可免費獲得21天從0到1全程上站指導。 《AIGC時代&#xff0c;程序員副業的必修課》 AIGC時代的到來&#xff0c;又是一個程序員的副業賺錢的好機會…

真香定律!我用這種模式重構了第三方登錄

分享是最有效的學習方式。 博客&#xff1a;https://blog.ktdaddy.com/ 老貓的設計模式專欄已經偷偷發車了。不甘愿做crud boy&#xff1f;看了好幾遍的設計模式還記不住&#xff1f;那就不要刻意記了&#xff0c;跟上老貓的步伐&#xff0c;在一個個有趣的職場故事中領悟設計模…

improve-echarts餅圖自適應(分辨率放大縮小)

1.echarts 本身存在放大縮小圖表不變的情況&#xff0c;要求要圖表適應分辨率&#xff0c;根據分辨率放大縮小來進行適應與響應式。 餅圖 <!-- 餅狀 --><div class"leftrcyle"><div class"ciclye"><div id"cicly" class&q…