'''
如果字串滿足一下條件之一,則可以稱之為 有效括號字串(valid parentheses string,可以簡寫為 vps):
字串是乙個空字串 "",或者是乙個不為 "(" 或 ")" 的單字元。
字串可以寫為 ab(a 與 b 字串連線),其中 a 和 b 都是 有效括號字串 。
字串可以寫為 (a),其中 a 是乙個 有效括號字串 。
類似地,可以定義任何有效括號字串 s 的 巢狀深度 depth(s):
depth("") = 0
depth(c) = 0,其中 c 是單個字元的字串,且該字元不是 "(" 或者 ")"
depth(a + b) = max(depth(a), depth(b)),其中 a 和 b 都是 有效括號字串
depth("(" + a + ")") = 1 + depth(a),其中 a 是乙個 有效括號字串
例如:""、"()()"、"()(()())" 都是 有效括號字串(巢狀深度分別為 0、1、2),而 ")(" 、"(()" 都不是 有效括號字串 。
給你乙個 有效括號字串 s,返回該字串的 s 巢狀深度 。
示例 1:
輸入:s = "(1+(2*3)+((8)/4))+1"
輸出:3
解釋:數字 8 在巢狀的 3 層括號中。
示例 2:
輸入:s = "(1)+((2))+(((3)))"
輸出:3
示例 3:
輸入:s = "1+(2*3)/(2-1)"
輸出:1
示例 4:
輸入:s = "1"
輸出:0
'''import re
def maxdepth(s):
#將非(、)字元替換為空
clean_s = re.sub("[^(,)]","",s)
depth = 0
#迴圈替換(),沒迴圈一次,深度加1
while "()" in clean_s:
clean_s = clean_s.replace("()","")
depth += 1
#如果clean_s不為空,則為非有效括號字串,返回-1,否則為有效括號字串,返回depth
return depth if clean_s=="" else -1
s = "(1+(2*3)+((8)/4))+1"
maxdepth(s)
有效的括號字串
問題描述 給定乙個只包含三種字元的字串 和 寫乙個函式來檢驗這個字串是否為有效字串。有效字串具有如下規則 任何左括號 必須有相應的右括號 任何右括號 必須有相應的左括號 左括號 必須在對應的右括號之前 可以被視為單個右括號 或單個左括號 或乙個空字串。乙個空字串也被視為有效字串。例 1 輸入 輸出 ...
字串 最長有效括號
給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。示例 1 輸入 輸出 2 解釋 最長有效括號子串為 示例 2 輸入 輸出 4 解釋 最長有效括號子串為 思路 記錄左右括號的個數 相等了就比較更新答案 如果count2 count1 就結算 從0開始 注意 還要從右向左遍歷!不然會漏掉...
python 判斷字串日期是否有效
用time模組的strptime函式獲取時間元組,如果成功為合法時間,反之為非法時間 def isvailddate self,date try if indate time.strptime date,y m d h m s else time.strptime date,y m d return...