Python有效括號字串判斷和深度計算
'''
如果字串滿足一下條件之一,則可以稱之為 有效括號字串(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)
相關文章
- 演算法題:判斷括號字串是否有效演算法字串
- javascript 判斷括號是否配對。JavaScript
- 使用Python實現一個棧, 判斷括號是否平衡Python
- LeetCode有效的括號(Python)LeetCodePython
- 最長有效括號
- 每日一題: 有效括號每日一題
- 20. 有效的括號
- JSON 字串中的中括號和大括號區別詳解JSON字串
- python如何判斷字串相等Python字串
- python中字串格式判斷Python字串
- [leetcode]有效的括號LeetCode
- [PHP字串]②--花括號{}的作用PHP字串
- Leetcode20. 有效的括號LeetCode
- Leetcode——20. 有效的括號LeetCode
- 【LeetCode-棧】有效的括號LeetCode
- LeetCode 20. 有效的括號LeetCode
- 【LeetCode】 20.有效的括號LeetCode
- [Go 演算法]20:有效括號(棧)Go演算法
- 理解正規表示式中的括號 (),方括號 [] 和大括號 {}
- 請寫一個整數計算器,支援加減乘三種運算和括號。Python版本Python
- 演算法篇-字串-TeX括號演算法字串
- interleave字串;及括號匹配分析字串
- PHP字串包含判斷PHP字串
- bash中字串判斷字串
- 大神教你如何判斷Python中字串是否為空和nullPython字串Null
- python如何判斷字串以什麼結尾Python字串
- php判斷字串A是否含有字串BPHP字串
- 【JAVA】判斷字串非空Java字串
- 判斷字串是否為空字串
- 判斷URL字串是否合法字串
- 判斷字串為空方法字串
- 判斷字串是否唯一字串
- js判斷字串是以指定字串結尾JS字串
- JavaScript中圓括號()和方括號[]的一個特殊用法JavaScript
- LeetCode-20. 有效的括號(棧模擬)LeetCode
- [LeetCode] Longest Valid Parentheses 最長有效括號LeetCode
- js判斷字串是否含有特殊字元和emoji表情JS字串字元
- 判斷Windows版本號 (轉)Windows