📅  最后修改于: 2023-12-03 15:09:46.811000             🧑  作者: Mango
平衡括号子串是指一个字符串中括号 ( {
,}
,[
,]
,(
,)
) 成对出现且顺序正确的子串。例如,字符串 {}[]{()}
中的 {}
, []
和 ()
都是平衡括号子串。
平衡括号子串的数量是在一个字符串中所有平衡括号子串的数量。计算它们的数量是一项经典问题,经常出现在编程面试中。
计算平衡括号子串数量的方法有多种,其中一种简单易懂的方法是使用栈来计算。以下是基本思路:
以下是使用 Python 实现上述方法的代码:
def count_balanced_substrings(s: str) -> int:
stack = [-1] # 将一个虚拟的位置放入栈中
result = 0
for i, c in enumerate(s):
if c in ("(", "[", "{"):
stack.append(i)
else:
if stack and ((c == ")" and s[stack[-1]] == "(")
or (c == "]" and s[stack[-1]] == "[")
or (c == "}" and s[stack[-1]] == "{")):
stack.pop()
result += i - stack[-1]
else:
stack = [-1 * (len(stack) + 1)]
return result
使用上述方法,时间复杂度为 $O(n)$,使用 $O(n)$ 的空间复杂度。
平衡括号子串的数量可以用于解决很多问题,例如:
平衡括号子串的数量是一道经典问题,对于程序员而言是很重要的。本文提供了一种简单易懂的解法,希望对读者有所帮助。