Python程式:統計每個括號深度內的字元數
假設我們有一個字串s,它只包含三個字元“X”、“(”和“)”。該字串具有平衡的括號,並且在其中一些“X”與可能巢狀的括號一起遞迴存在。我們必須找到s中每個括號深度的“X”的數量,從最淺的深度到最深的深度。
因此,如果輸入類似於s = "(XXX(X(XX))XX)",則輸出將為[5, 1, 2]

為了解決這個問題,我們將遵循以下步驟:
- depth := -1
- out := 新列表
- 對於s中的每個字元c,執行以下操作:
- 如果c與“(”相同,則
- depth := depth + 1
- 否則,如果c與“) ”相同,則
- depth := depth - 1
- 如果depth與out的大小相同,則
- 在out的末尾插入0
- 如果c與“X”相同,則
- out[depth] := out[depth] + 1
- 如果c與“(”相同,則
- 返回out
示例
讓我們看看下面的實現以更好地理解:
def solve(s):
depth = -1
out = []
for c in s:
if c == "(":
depth += 1
elif c == ")":
depth -= 1
if depth == len(out):
out.append(0)
if c == "X":
out[depth] += 1
return out
s = "(XXX(X(XX))XX)"
print(solve(s))輸入
"(XXX(X(XX))XX)"
輸出
[5, 1, 2]
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP