給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。有效字串滿足:
(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...