最长有效括号,用python实现
时间: 2023-07-17 15:01:14 浏览: 98
python 实现最长有效括号
可以使用栈来解决最长有效括号的问题。具体的实现如下:
```python
def longest_valid_parentheses(s):
if not s:
return 0
stack = [-1] # 用于记录左括号的下标
max_length = 0
for i in range(len(s)):
if s[i] == '(':
stack.append(i)
else:
stack.pop()
if not stack:
stack.append(i)
else:
max_length = max(max_length, i - stack[-1])
return max_length
```
这里使用一个栈来记录未匹配的左括号的下标。初始时,将 -1 放入栈中作为一个参考点。遍历字符串,如果遇到左括号,则将其下标入栈;如果遇到右括号,则弹出栈顶元素,表示匹配了一个左括号。然后判断当前栈是否为空,若为空,则表示右括号之前没有左括号与之匹配,此时将当前右括号的下标入栈作为一个新的参考点;若不为空,则计算当前右括号与栈顶元素之间的距离(即有效括号的长度),并更新最长有效括号的长度。
你可以调用 `longest_valid_parentheses` 函数并传入一个字符串来测试它的功能。例如:
```python
s = "(()"
result = longest_valid_parentheses(s)
print(result) # 输出:2
```
这里的最长有效括号是 "()",它的长度为 2。
阅读全文