第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

匹配平衡括號(hào)但必須檢查保留順序

匹配平衡括號(hào)但必須檢查保留順序

Smart貓小萌 2023-06-20 16:29:05
這是我的測(cè)試用例->{(<[testdata])>}-> 錯(cuò)誤{just{test<of>Unbalanced}String')-> 錯(cuò)誤{(<[ABalancedExample]>)}-> 真opening?=?['[','(','<','{'] closing?=?[']',')','>','}']我的代碼不適用于 {(<[testdata])>} 因?yàn)闆]有處理括號(hào)的順序def?check(str): ????count?=?0 ????if?not?str:?? ??????????return?None ????for?i?in?str:? ???????????if?i?in?opening: ????????????count?+=?1 ????????elif?i?in?closing: ????????????count?-=?1 ????????if?count?<?0:? ???????????????????return?False ????return?count?==?0
查看完整描述

1 回答

?
慕妹3146593

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊

這是一個(gè)堆棧問題。幸運(yùn)的是,默認(rèn)情況下列表作為堆棧工作。


def check(s):

    """

    >>> check("{(<[testdata])>}")

    False

    >>> check("{just{test<of>Unbalanced}String')")

    False

    >>> check("{(<[ABalancedExample]>)}")

    True

    """


    bracket_matches = {

        '[': ']',

        '(': ')',

        '<': '>',

        '{': '}',

    }


    opening = set(bracket_matches.keys())

    closing = set(bracket_matches.values())

    stack = []

    

    for ch in s:

        if ch in opening:

            stack.append(bracket_matches[ch])

            continue

        if ch in closing:

            try:

                if ch == stack.pop():

                    continue

                else:

                    return False

            except IndexError:

                # stack is empty

                return False

    return stack == []

請(qǐng)注意,如果您需要允許不匹配的右括號(hào),只要其余的括號(hào)仍然平衡,這就不夠了,例如,包括以下測(cè)試會(huì)使此功能不兼容:


>>> check("{{<[test}data]>}}")


查看完整回答
反對(duì) 回復(fù) 2023-06-20
  • 1 回答
  • 0 關(guān)注
  • 99 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)