思路
1.题目问什么,我们定义什么状态
定义dp(i)代表以i为结尾的最长的有效括号子串长度。
转移:
如果s[i]=( , 那么 dp(i)=0。 因为一个合法的括号序列的右端点一定要是一个右括号。
给定一个仅由 ( 和 ) 组成的字符串 s,我们称一个连续的括号片段为有效片段,当且仅当它满足括号匹配规则。请计算字符串 s 中所有有效片段长度的最大值。
约束条件:
s 的长度在 0 到 3×104 之间。s 只包含字符 ( 和 )。输入包含一个参数:一个字符串 s,表示待检查的括号序列。该字符串仅由 ( 和 ) 组成。
返回一个整数,表示字符串 s 中最长有效括号子串的长度。
输入
)(
输出
0
说明
字符串由 ) 和 ( 组成。第一个字符是 ),无法作为有效片段的左端;第二个字符是 (,后面没有匹配的 ),因此没有任何连续有效括号片段。最长有效长度为 0。
输入
()(())
输出
6
说明
整个字符串 ()(()) 是一个连续的有效括号片段。前两个字符 () 匹配,后四个字符 (()) 构成嵌套匹配,这两段相邻,使整个字符串成为连续有效片段。因此最长有效长度为 6。
输入
)(()())
输出
6
说明
第一个字符是 ),不能参与任何有效片段。从第二个字符开始的 (()()) 是一个完整且连续的有效括号片段,长度为 6。因此最长有效长度为 6。
输入
(()()
输出
4
说明
字符串 (()() 中,从第 2 个字符到第 5 个字符的连续子串是 ()(),长度为 4。其余位置无法组成更长的有效片段,因此最长有效长度为 4。
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册