用python中类和对象知识编写编写程序:输入一组字符串,已知所给字符串只包含“(”和“)”,请使用顺序查找,求出最长的合法括号子串的长度。例如所给字符串为()()()),则最长的合法括号子串为()()(),因此输出该子串的长度6。 输入:()()() 输出:6
时间: 2024-01-03 10:04:58 浏览: 73
好的,根据你的要求,我来为你编写一个实现该功能的 Python 程序。
```python
class Solution:
def longestValidParentheses(self, s: str) -> int:
stack = [-1]
max_len = 0
for i in range(len(s)):
if s[i] == "(":
stack.append(i)
else:
stack.pop()
if not stack:
stack.append(i)
else:
max_len = max(max_len, i - stack[-1])
return max_len
```
这是一个使用栈(stack)的算法,时间复杂度为 O(n)。具体实现方式如下:
1. 定义一个栈 stack,初始时将 -1 压入栈中。
2. 遍历字符串 s 中的每个字符:
- 如果是左括号 "(",则将当前字符的下标 i 压入栈中。
- 如果是右括号 ")",则弹出栈顶元素,表示与当前右括号匹配的左括号已经被匹配,计算当前合法子串的长度 i - stack[-1],并更新最大长度 max_len。
3. 返回最大长度 max_len。
你可以将输入的字符串作为参数传递给函数 longestValidParentheses,然后获得最长的合法括号子串的长度。例如:
```python
s = Solution()
print(s.longestValidParentheses("()()()")) # 输出 6
```
希望这个程序可以帮助你解决问题。如果还有其他问题,可以继续问我。
阅读全文