python實現(xiàn)有效的括號判斷實例代碼
題目描述
給定一個只包括 '(',')','{','}','[',']'的字符串 s ,判斷字符串是否有效。
有效字符串需滿足:
- 左括號必須用相同類型的右括號閉合。
- 左括號必須以正確的順序閉合。
LeetCode原題地址:https://leetcode-cn.com/problems/valid-parentheses/
測試用例
示例 1
輸入:s = “()”
輸出:true
示例 2
輸入:s = “()[]{}”
輸出:true
示例 3
輸入:s = “(]”
輸出:false
示例 4
輸入:s = “([)]”
輸出:false
示例 5
輸入:s = “{[]}”
輸出:true
代碼實現(xiàn)
實現(xiàn)這個算法我們可以利用棧的先進后出的特性,對于每個括號它需要找到與它匹配的括號。
我們先遍歷字符串,將字符串的字符存入到棧中,當匹配到結(jié)束的括號時,如果此時棧不為空并且棧頂?shù)淖址c當前的括號相匹配時,我們將棧頂?shù)淖址M行出棧操作,否則直接返回False。如果最終棧為空表示每個括號都找到了匹配的結(jié)束括號,否則匹配失敗。
class Solution: def isValid(self, s: str) -> bool: #如果字符串是奇數(shù)一定不滿足條件 if len(s) % 2 != 0: return False #定義一個括號字典 bracket_dict = {")":"(","]":"[","}":"{"} #定義一個棧 stack = [] for c in s: #當匹配到括號的結(jié)束符時 if c in bracket_dict: #棧不能為空,并且棧頂要與結(jié)束的括號匹配 if len(stack) > 0 and bracket_dict[c] == stack[-1]: stack.pop() else: return False else: stack.append(c) return not stack s = Solution() print(s.isValid("()[]{}")) print(s.isValid("([)]"))
參考:LeetCode詳解
總結(jié)
到此這篇關(guān)于python實現(xiàn)有效的括號判斷的文章就介紹到這了,更多相關(guān)python有效的括號判斷內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python通過getopt模塊如何獲取執(zhí)行的命令參數(shù)詳解
這篇文章主要給大家介紹了關(guān)于python通過getopt模塊如何獲取執(zhí)行的命令參數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12python3.6的字符串處理f-string的使用技巧分享
在這篇文章中講解了F字符串的基礎(chǔ)使用,對于F字符串有著很多的使用技巧,在這篇文章中你會見識到更多的F字符串的使用技巧,下面小編將介紹python3.6?的字符串處理f-string的使用技巧,需要的朋友可以參考下2024-02-02Python PaddleNLP實現(xiàn)自動生成虎年藏頭詩
這篇文章主要介紹了利用Python PaddleNLP實現(xiàn)自動生成虎年藏頭詩功能,文中的示例代碼講解詳細,感興趣的同學(xué)可以跟隨小編一起試一試2022-01-01Python調(diào)用graphviz繪制結(jié)構(gòu)化圖形網(wǎng)絡(luò)示例
今天小編就為大家分享一篇Python調(diào)用graphviz繪制結(jié)構(gòu)化圖形網(wǎng)絡(luò)示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11