判斷括號是否閉合


題目

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

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

實現思路

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

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

代碼實現:

s = '[sfddsf]{kohij]k}'
def isValid(s):
    stack = []
    for char in s:
        if char == '[' or char == '{' or char == '(':
            stack.append(char)
        if char == ']':
            if len(stack)==0 or stack.pop()!='[':
                return False

        if char == '}':
            if len(stack)==0 or stack.pop()!='{':
                return False

        if char == ')':
            if len(stack)==0 or stack.pop()!='(':
                return False


    return True if len(stack)==0 else False

print(isValid(s))

 


免責聲明!

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



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