91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解決括號匹配問題

發布時間:2021-10-09 16:13:14 來源:億速云 閱讀:184 作者:iii 欄目:編程語言

本篇內容主要講解“如何解決括號匹配問題”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何解決括號匹配問題”吧!

問題描述

假設我們有一個復雜的字符串,里邊包含了多種括號的嵌套,如下圖:

如何解決括號匹配問題

這時候人為地用肉眼去判斷其中的括號是否匹配是一件非常麻煩的事,不僅耗時耗力,而且準確率極低。那么,有什么方法可以幫助我們高效地進行判斷呢,根據棧的特點,我們可以很容易地想到利用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))

運行結果如下圖:

如何解決括號匹配問題  如何解決括號匹配問題

到此,相信大家對“如何解決括號匹配問題”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

蓝田县| 平湖市| 布尔津县| 五河县| 玛纳斯县| 博湖县| 凭祥市| 丽江市| 锦屏县| 吴江市| 安泽县| 盐池县| 凭祥市| 孝义市| 临清市| 托克逊县| 长垣县| 鄂尔多斯市| 资阳市| 吉林市| 江永县| 咸阳市| 汽车| 定陶县| 蕲春县| 吴旗县| 巴青县| 芷江| 江口县| 津市市| 延寿县| 交城县| 尉犁县| 阳东县| 武陟县| 游戏| 河源市| 山东| 台北县| 黄冈市| 鹤庆县|