中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

如何解決括號匹配問題

發布時間: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

璧山县| 根河市| 东安县| 叙永县| 锡林郭勒盟| 新泰市| 朝阳县| 赫章县| 鹤岗市| 子长县| 翼城县| 南雄市| 龙陵县| 临沧市| 普格县| 三明市| 岗巴县| 洛隆县| 八宿县| 简阳市| 吴忠市| 建水县| 象州县| 河南省| 江西省| 辽源市| 斗六市| 客服| 本溪市| 吴桥县| 前郭尔| 苍溪县| 阳新县| 莫力| 景洪市| 海林市| 独山县| 连云港市| 阜康市| 铜鼓县| 赫章县|