博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode #动态规划# .32 最长有效括号。
阅读量:3952 次
发布时间:2019-05-24

本文共 850 字,大约阅读时间需要 2 分钟。

Difficulty: 困难

给定一个只包含 '('')' 的字符串,找出最长的包含有效括号的子串的长度。

示例 1:

输入: "(()"输出: 2解释: 最长有效括号子串为 "()"

示例 2:

输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"

Solution

Language: ****

class Solution {
public: int longestValidParentheses(string s) {
int max_len = 0,_i = 0,stack = 0; for (int i=0,n = s.size() ; i

dp 的解法:

class Solution {
public: int longestValidParentheses(string s) {
int n = s.size(); vector
dp(n,0); int ans = 0; for(int i = 1; i < n; i++){
if(s[i] == ')' && s[i - 1] == '(') dp[i] = i - 2 >= 0? dp[i - 2] + 2: 2; if(s[i] == ')' && s[i - 1] == ')' && i - dp[i - 1] - 1 >= 0 && s[i - dp[i - 1] - 1] == '(') dp[i] = dp[i - 1] + (i - dp[i - 1] - 2 >= 0? dp[i - dp[i - 1] - 2]: 0) + 2; ans = max(ans, dp[i]); } return ans; }};

转载地址:http://xyyzi.baihongyu.com/

你可能感兴趣的文章
c++ 标准模板库 List
查看>>
Android键盘系统相关代码分析(1)
查看>>
Android键盘系统
查看>>
关于构造IOCTL命令的学习心得
查看>>
Android Keyboard/Touch Panel分析
查看>>
Linux Kernel and Android休眠与唤醒
查看>>
Android Framework 分析
查看>>
inotify -- Linux 2.6 内核中的文件系统变化通知机制
查看>>
C++和JNI的数据转换
查看>>
poll()函数的使用
查看>>
I/O多路复用详解(二)
查看>>
深入理解硬盘的Linux分区
查看>>
ARM 指令集>>跳转指令
查看>>
gpio linux 实现模型
查看>>
Linux 2440 LCD 控制器
查看>>
/sys/bus/i2c/devices下的内容与i2c_board_info结构体
查看>>
为linux虚拟机增加第二块硬盘
查看>>
Linux那些事儿之我是EHCI(2) 套路
查看>>
i2c-adapter的注册过程
查看>>
container_of()宏
查看>>