日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Leetcode | easy】有效的括号

發布時間:2025/4/5 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Leetcode | easy】有效的括号 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

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

有效字符串需滿足:

  • 左括號必須用相同類型的右括號閉合。
  • 左括號必須以正確的順序閉合。
  • 注意空字符串可被認為是有效字符串。

    示例 1:

    輸入: “()”
    輸出: true

    示例 2:

    輸入: “()[]{}”
    輸出: true

    示例 3:

    輸入: “(]”
    輸出: false

    示例 4:

    輸入: “([)]”
    輸出: false

    示例 5:

    輸入: “{[]}”
    輸出: true

    思路

    空字符串可被認為是有效字符串;

    而對于非空字符串,被判斷為有效字符串的條件是括號都按相應順序和類別互相匹配。因此,可以利用一個先進后出的棧,保存左括號的順序和類別,從而按順序進行左右括號兩兩配對,以判斷括號的有效性。

    算法描述如下:

  • 字典d1保存右括號對應的左括號類型,d2用于判斷括號為左括號還是右括號
  • 利用棧來判斷括號的閉合順序
  • 對于字符串中的每一個元素,進行4,5,6操作
  • 首先判斷是左括號還是右括號
  • 對于右括號,分情況判斷:
    a. 若此時棧為空,則不符合括號閉合順序,判定為無效的括號,跳到操作8
    b. 若棧不為空,且當前棧頂元素為右括號對應的左括號,配對成功,將該左括號移出棧
    c. 若棧不為空,且當前棧頂元素不是右括號對應的左括號,則配對不成功,判定為無效的括號,跳到操作8
  • 對于左括號,直接壓棧操作
  • 若遍歷完所有元素以后,棧為空,則說明括號都按相應順序和類別,兩兩配對完了,則括號有效,跳到操作8
  • 輸出判定結果
  • 解答

    class Solution:def isValid(self, s):""":type s: str:rtype: bool"""d1 = { ')':'(', '}':'{', ']':'['}d2 = {'(': 1, ')': -1, '{': 1, '}': -1, '[': 1, ']': -1}stack = []isValid = Falsei = 0while i < len(s):if d2[s[i]] == -1:if stack == []:breakelif d1[s[i]] == stack[-1]:stack.pop()else:breakif d2[s[i]] == 1:stack.append(s[i])i+=1;if i == len(s) and stack == []:isValid = Truereturn isValid

    總結

    以上是生活随笔為你收集整理的【Leetcode | easy】有效的括号的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。