python實(shí)現(xiàn)有效的括號(hào)判斷實(shí)例代碼
題目描述
給定一個(gè)只包括 '(',')','{','}','[',']'的字符串 s ,判斷字符串是否有效。
有效字符串需滿足:
- 左括號(hào)必須用相同類型的右括號(hào)閉合。
- 左括號(hào)必須以正確的順序閉合。
LeetCode原題地址:https://leetcode-cn.com/problems/valid-parentheses/
測(cè)試用例
示例 1
輸入:s = “()”
輸出:true
示例 2
輸入:s = “()[]{}”
輸出:true
示例 3
輸入:s = “(]”
輸出:false
示例 4
輸入:s = “([)]”
輸出:false
示例 5
輸入:s = “{[]}”
輸出:true
代碼實(shí)現(xiàn)
實(shí)現(xiàn)這個(gè)算法我們可以利用棧的先進(jìn)后出的特性,對(duì)于每個(gè)括號(hào)它需要找到與它匹配的括號(hào)。
我們先遍歷字符串,將字符串的字符存入到棧中,當(dāng)匹配到結(jié)束的括號(hào)時(shí),如果此時(shí)棧不為空并且棧頂?shù)淖址c當(dāng)前的括號(hào)相匹配時(shí),我們將棧頂?shù)淖址M(jìn)行出棧操作,否則直接返回False。如果最終棧為空表示每個(gè)括號(hào)都找到了匹配的結(jié)束括號(hào),否則匹配失敗。
class Solution:
def isValid(self, s: str) -> bool:
#如果字符串是奇數(shù)一定不滿足條件
if len(s) % 2 != 0:
return False
#定義一個(gè)括號(hào)字典
bracket_dict = {")":"(","]":"[","}":"{"}
#定義一個(gè)棧
stack = []
for c in s:
#當(dāng)匹配到括號(hào)的結(jié)束符時(shí)
if c in bracket_dict:
#棧不能為空,并且棧頂要與結(jié)束的括號(hào)匹配
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實(shí)現(xiàn)有效的括號(hào)判斷的文章就介紹到這了,更多相關(guān)python有效的括號(hào)判斷內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python流式游標(biāo)與緩存式(默認(rèn))游標(biāo)的那些坑及解決
這篇文章主要介紹了Python流式游標(biāo)與緩存式(默認(rèn))游標(biāo)的那些坑及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
python獲取引用對(duì)象的個(gè)數(shù)方式
今天小編就為大家分享一篇python獲取引用對(duì)象的個(gè)數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
Django migrate報(bào)錯(cuò)的解決方案
在講解如何解決migrate報(bào)錯(cuò)原因前,我們先要了解migrate做了什么事情,本文就詳細(xì)的介紹migrate使用以及出現(xiàn)問(wèn)題的解決,感興趣的可以了解一下2021-05-05
基于Python構(gòu)建一個(gè)智能語(yǔ)音機(jī)器人
這篇文章主要為大家詳細(xì)介紹了如何基于Python構(gòu)建一個(gè)智能語(yǔ)音機(jī)器人,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12
Python Http請(qǐng)求json解析庫(kù)用法解析
這篇文章主要介紹了Python Http請(qǐng)求json解析庫(kù)用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
基于Python3.6+splinter實(shí)現(xiàn)自動(dòng)搶火車票
這篇文章主要為大家詳細(xì)介紹了基于Python3.6+splinter實(shí)現(xiàn)自動(dòng)搶火車票,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
python之如何使用openpyxl設(shè)置單元格樣式
這篇文章主要介紹了python之如何使用openpyxl設(shè)置單元格樣式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06

