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
  • 返回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]

更新於:2021年10月16日

434 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.