亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

如何解決括號匹配問題

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

潜江市| 太仆寺旗| 西充县| 盐城市| 日土县| 余姚市| 花垣县| 青神县| 彭山县| 南岸区| 兴仁县| 屏山县| 宁乡县| 鄯善县| 湖南省| 印江| 腾冲县| 磐石市| 平昌县| 新巴尔虎左旗| 美姑县| 临猗县| 化德县| 泊头市| 桦甸市| 贺兰县| 商南县| 龙里县| 义马市| 平乡县| 错那县| 炎陵县| 东海县| 黄陵县| 丰都县| 肇州县| 砚山县| 兴城市| 兴山县| 银川市| 五台县|