LeetCode20.python實現: 有效的括號問題☆


目錄

問題

解題思路

python具體實現

題外記


問題

給定一個只包括 '('')''{''}''['']' 的字符串,判斷字符串是否有效。

有效字符串需滿足:

  1. 左括號必須用相同類型的右括號閉合。
  2. 左括號必須以正確的順序閉合。

注意空字符串可被認爲是有效字符串。


示例 1:

輸入: "()"
輸出: true

示例 2:

輸入: "()[]{}"
輸出: true

示例 3:

輸入: "(]"
輸出: false

示例 4:

輸入: "([)]"
輸出: false

示例 5:

輸入: "{[]}"
輸出: true

解題思路

    分析:這也是一道比較簡單的題目,具體就類似堆棧:在入棧前判斷棧中最後一個元素和當前元素是否配對,配對就彈出棧中元素,循環遍歷一遍字符串後,如果棧不爲空,則字符串無效。

    注意

         1)就是如果字符串長度是奇數,則必然無效。

         2)配對的括號,建立字典時的鍵值關係。具體參考代碼:


python具體實現

class Solution(object):
    def isValid(self, s):
        """
        :type s: str
        :rtype: bool
        """
        sLen = len(s)
        bracketStack = []
        bracketDict = {')':'(','}':'{',']':'['}
        flag = True
 
        if sLen%2 ==1:
            flag = False
        else:
            for i in range(sLen):
                if len(bracketStack) <1:
                    bracketStack.append(s[i])
                elif s[i] in ['(','{','[']:
                    bracketStack.append(s[i])
                elif bracketStack[-1]==bracketDict[s[i]]:
                    bracketStack = bracketStack[:-1]
                
            if bracketStack != []:
                flag = False
        return flag

題外記

       對堆棧的操作,太少,知道其含義,但是出入棧的操作,不是用的棧的操作方式,實現的棧的含義。

 

發佈了69 篇原創文章 · 獲贊 19 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章