給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 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...