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

示例

让我们看看下面的实现以更好地理解:

Open Compiler
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)"

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

输出

[5, 1, 2]

更新于:2021年10月16日

434 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告