字符串的括號匹配(python)

括號匹配說明

  • 本方法字符串中只有 () 括號

算法思路

  • 從左到右遍歷字符串
  • 如果不是括號,默認是有效字符,遍歷下一個字符
  • 如果是左括號,左括號進入棧,遍歷下一個字符
  • 如果是右括號
    • 當前棧是否還有左括號
    • 沒有則匹配失敗
    • 有,出棧比較是否匹配
  • 如果出棧的字符和當前字符匹配為一對括號,遍歷下一個
  • 不匹配,則匹配失敗
  • 遍歷完畢后,判斷棧中是否還有剩余左括號
    • 沒有,匹配成功
    • 有,說明有多余左括號,匹配失敗

python代碼

def is_encode(str):
    # 放左右括號的棧
    bracket = '()'
    open_brackets = []
    close_brackets = [')']
    # 見一個右括號就出一個左括號
    for i in range(len(str)):
        si = str[i]
        # 如果不是括號,下一個
        if bracket.find(si) == -1:
            continue
#       如果是左括號就入棧
        if si == '(':
            open_brackets.append(si)
            continue
        # 走下下面說明就是右括號了,因為上面已經(jīng)排除了不是字母和左括號了
        if len(open_brackets) == 0:
            # 現(xiàn)在來了個右括號,但是沒有匹配的了
            return False
        #上面排除了各種情況,現(xiàn)在開始正常匹配了
        p = open_brackets.pop()
        if p =='(' and si ==')':
            continue
        else:
            return False

    #判斷是否還有多余的左括號呀
    if len(open_brackets) > 0:
        return False
    return True
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容