您好,登錄后才能下訂單哦!
本篇內容主要講解“如何解決括號匹配問題”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何解決括號匹配問題”吧!
問題描述
假設我們有一個復雜的字符串,里邊包含了多種括號的嵌套,如下圖:
這時候人為地用肉眼去判斷其中的括號是否匹配是一件非常麻煩的事,不僅耗時耗力,而且準確率極低。那么,有什么方法可以幫助我們高效地進行判斷呢,根據棧的特點,我們可以很容易地想到利用python中的list來模擬棧結構進行判斷。
示例:
輸入:((ABCD(x)
輸出:False
輸入:{[(rttyy)]sss}
輸出:True
解決方案
我們用棧來保存未匹配的左括號,利用for循環從左到右依次遍歷字符串的每個元素。當遍歷到左括號時,則將其壓入棧中;當遍歷到右括號時,從棧頂取出一個左括號。如果能夠匹配,則繼續遍歷剩下的字符串。如果遍歷的過程中,遇到不能配對的右括號,或者棧中沒有數據,則說明該字符串的括號匹配有誤,直接返回False。當所有的括號都掃描完成之后,如果棧為空則說明該字符串的括號全部匹配正確,返回True;如果棧不為空,說明有未匹配的左括號,則返回False。
# coding:utf-8 def BracketMatch(str): #把左括號與右括號分別放在一組 LeftBrackets = '{[(' RightBrackets = '}])' #根據括號的匹配關系建立一個字典,右括號當key,左括號當value Brackets = {'}':'{',']':'[',')':'('} # 建立一個棧,初始值為空列表 Stack = [ ] for char in (str): if char in LeftBrackets: Stack.append(char) if char in RightBrackets: if Stack == [ ]: return False else: if Brackets[char] == Stack[-1]: Stack.pop() else: return False if Stack == [ ]: return True else: return False str = input('請輸入字符:') print(BracketMatch(str)) |
運行結果如下圖:
到此,相信大家對“如何解決括號匹配問題”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。