leetcode刷題(30) 20 有效的括號

2021-09-29 15:59:58 字數 1179 閱讀 5548

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

有效字串需滿足:

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

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

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

示例 1:

輸入: 「()」

輸出: true

示例 2:

輸入: 「(){}」

輸出: true

示例 3:

輸入: 「(]」

輸出: false

示例 4:

輸入: 「([)]」

輸出: false

示例 5:

輸入: 「」

輸出: true

這裡不能簡單統計括號出現的次數是否匹配,如下面的寫法就是錯誤的:

class solution 

else

if(c==

']')

else

if(c==

'(')

else

if(c==

')')

else

if(c==

'else

if(c==

'}')

}return left1==right1&&left2==right2&&left3==right3;

}}

演算法

1.初始化棧 s。

2.一次處理表示式的每個括號。

3.如果遇到開括號,我們只需將其推到棧上即可。這意味著我們將稍後處理它,讓我們簡單地轉到前面的 子表示式。

4.如果我們遇到乙個閉括號,那麼我們檢查棧頂的元素。如果棧頂的元素是乙個 相同型別的 左括號,5.那麼我們將它從棧中彈出並繼續處理。否則,這意味著表示式無效。

如果到最後我們剩下的棧中仍然有元素,那麼這意味著表示式無效。

public solution()

',' public boolean isvalid

(string s)

}else

}// if the stack still contains elements, then it is an invalid expression.

return stack.

isempty()

;}注意:

開始刷題LeetCode

今天決定開始刷題,每天至少一題,如果題目確實沒有解決出來沒有關係,但是要保證每天至少接觸了一道新的題目!一定要堅持下去,現在是個菜鳥可能會感覺有點難度,堅持下去,總有一天會好的!今天是第一天,做的第乙個題目 reverse words in a string given an input strin...

leetcode刷題歷程

難度 簡單 題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 ...

LeetCode刷題總結

123 4567 891011 12 元素交換 swap a 1 a 3 sort排序 sort a.begin a.end 陣列顛倒 reverse a.begin a.end 陣列元素置為0 memset a,0,a.size 陣列取值 a.push back 定義二維陣列 vector vec...