Leetcode(3)每日一練 判斷有效地括號

2021-10-24 20:32:17 字數 1006 閱讀 8513

給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。有效字串滿足:

(1)左括號必須用相同型別的右括號閉合。

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

注意空字串可被認為是有效字串。

(1)若遇到左括號入棧,遇到右括號時將對應棧頂左括號出棧,則遍歷完所有括號後 stack 仍然為空;

(2)建立雜湊表m,構建左右括號對應關係;

(3)建立棧stack,遍歷字串s,根據棧的先入後出的特點進行判斷,如果 c 是左括號,則入棧 stack.push,否則通過雜湊表判斷括號對應關係,若 stack 棧頂的出棧括號 stack.pop() 與當前遍歷的右括號c 不對應,則提前返回 false。

class

solution,,

,,,'

,6}}

;//建立棧st

stack<

char

> st;

bool istrue=

true

;//對輸入字串s進行遍歷

/* 相當於:

for(int i = 0;i < s.length();i++)

*/for(

char c:s)

}//考慮有效括號數量的奇數情況

/* 相當於:

int len = s.length();

if(s.length() % 2 == 1)

*/if(

!st.

empty()

) istrue=

false

;return istrue;}}

;

1、 對字串遍歷的技巧:for(char c:s);

2、加深如何使用無需unorder_map構建雜湊表;

3、加深資料結構中的棧知識,先進後出,以及入棧stack.push()和出站stack.pop();

Leetcode 每日一練

最小棧 設計乙個支援 push pop top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 輸入 minstack push push push getmin pop top ge...

Leetcode 每日一練

leetcode 每日一練 擁有最多糖果的孩子 給你乙個陣列 candies 和乙個整數 extracandies 其中 candies i 代表第 i 個孩子擁有的糖果數目。對每乙個孩子,檢查是否存在一種方案,將額外的 extracandies 個糖果分配給孩子們之後,此孩子有 最多 的糖果。注意...

Leetcode 每日一練

猜數字 小a 和 小b 在玩猜數字。小b 每次從 1,2,3 中隨機選擇乙個,小a 每次也從 1,2,3 中選擇乙個猜。他們一共進行三次這個遊戲,請返回 小a 猜對了幾次?輸入的guess陣列為 小a 每次的猜測,answer陣列為 小b 每次的選擇。guess和answer的長度都等於3。示例 1...