Python編程題4--判斷字符串里面的括號是否閉合


題目

給定一個只包括 '(',')','{','}','[',']' 的字符串,判斷字符串是否有效。有效字符串需滿足以下要求:
1,左括號必須用相同類型的右括號閉合。
2,左括號必須以正確的順序閉合。
3,注意空字符串可被認為是有效字符串。

例如,"{[{()}]()}"就是一個閉合的有效字符串。

實現思路

這里我們運用 里面 先進后出 的思想來處理問題。

  • 遍歷字符串中的每一個括號
  • 定義一個空列表,如果遇到左括號,就存儲到列表中
  • 如果遇到右括號,判斷列表是否為空,不為空就彈出列表中最后一個左括號,並判斷右括號和彈出的左括號是否匹配,不匹配則返回 False
  • 如果遇到右括號,且列表為空,那么也就表示列表中沒有匹配的括號,則直接返回 False
  • 遍歷結束,最后再判斷列表是否為空,不為空則表示左/右括號有多余的,返回 False ; 為空則表示是閉合的有效字符串,返回 True

代碼實現

def demo(s):
    stack = []
    for i in s:
        if i == "(" or i == "[" or i == "{":
            stack.append(i)
        elif i == ")":
            if len(stack) == 0 or stack.pop() != "(":
                return False
        elif i == "]":
            if len(stack) == 0 or stack.pop() != "[":
                return False
        elif i == "}":
            if len(stack) == 0 or stack.pop() != "{":
                return False
    return True if len(stack) == 0 else False


res1 = demo("{[{()}]()}")
print(res1 == True)

res2 = demo("{}())))[]")
print(res2 == False)

res3 = demo("")
print(res3 == True)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM