LeetCode-100题(Hot) 32. 最长有效括号 [Java实现] [极速]

news/2024/12/1 0:39:26/

给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。

示例 1:

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


动态规划yyds

设 dp[s.length()] 中 dp[i] 为 [0, i] 处最长有效括号长度,经分析输入可分为以下几种情况(前后/中间夹杂着 '(' 或 ')' )

  1.  "()()...()()"
  2. "((...()...))"
  3. "()()...((...()...))"

那么我们对于任何一个合法开头(开头为'(' )的括号字符串都有:

    public int longestValidParentheses(String s) {char[] chars = s.toCharArray();if (chars.length < 2) return 0;int result = 0;int[] dp = new int[chars.length];for (int i = 1; i < chars.length; ++ i) {if (chars[i] == 41) {if (chars[i-1] == 40) {// 三目处理 '()..()..()' 的情况dp[i] = (i >= 2 ? dp[i-2] : 0) + 2;} else if (i-dp[i-1] > 0 && chars[i - dp[i-1] - 1] == 40) {// 三目处理 '()(..(..)..)' 的情况dp[i] = dp[i-1] + (i-dp[i-1] >= 2 ? dp[i - dp[i-1] - 2] : 0) + 2;}if (dp[i] > result) {result = dp[i];}}}return result;}

                                


http://www.ppmy.cn/news/363246.html

相关文章

01背包问题和完全背包问题

这里说的最大值加上value[i]就是拿第i件物品的最后答案&#xff0c; 即为f[i][j]。 感觉我不太会讲呜呜呜 //01背包问题题解 #include<iostream> #include<cstdio> #include<math.h> using namespace std; #define v 1500 unsigned int f[v][v]; //全局变…

又拿下一块屏幕,中景园2.08寸OLED SH1122 带字库芯片 GT30L32S4W

没图没真相&#xff0c;一直知道有字库芯片这么个东西&#xff0c;终于找时间下手试了试&#xff0c;还算比较好用&#xff0c;就是开始卖家资料给错了白浪费俩小时。。。 sh1122 刚好mpy论坛有程序&#xff0c;直接白嫖 字库芯片 参照我徒弟的库&#xff0c;简单重新写了下 难…

平方根法、改进的平方根法解方程组

本篇内容包含两个部分&#xff1a;平方根法、改进的平方根法。感觉这种题绝大部分是靠套公式&#xff0c;记住公式和解题思路&#xff0c;还是相当简单的。 1 平方根法 1.1 解题思路 1.2 核心公式 1.3 例题解析 由 Lyb && L^t*xy 解得 x [1, -1, 1]^t2 改进的平方根…

[牛客网刷题]L32 非整数倍数据位宽转换24to128

1.题目描述 实现数据位宽转换电路&#xff0c;实现24bit数据输入转换为128bit数据输出。其中&#xff0c;先到的数据应置于输出的高bit位。电路的接口如下图所示。valid_in用来指示数据输入data_in的有效性&#xff0c;valid_out用来指示数据输出data_out的有效性&#xff1b;…

GT20L16S1Y GT30L32S4W 横置竖排 转换为 横置横排

GT20L16S1Y GT30L32S4W 横置竖排 转换为 横置横排 参考&#xff1a;https://blog.csdn.net/lljss1980/article/details/126566150 GT20L16S1Y 为横置竖排 GT30L32S4W 为横置横排 暂时为了适配 写了一个适配16 * 16点阵 32 * 32点阵 横置竖排 转换为 横置横排 的算法 /// brie…

GT30L32S4W中文字库芯片+墨水屏显示调好程序分享

这公司叫高通&#xff0c;但新版规格书不带地址运算&#xff0c;带地址运算规格书下载GT30L32S4W规格书&#xff0c;带地址运算 芯片管脚配置&#xff1a; 基础驱动及读取代码&#xff1a; /********************************************************************* brief …

IA32-Linux地址转换过程

在保护模式下&#xff0c;IA32采用段页式虚拟内存管理&#xff0c;即先分段再分页。地址的类型有以下三种&#xff1a; 逻辑地址&#xff08;48bit&#xff09;线性地址&#xff08;32bit&#xff09;物理地址 由逻辑地址转化为线性地址由分段过程完成&#xff0c;由线性地址…

[Android Pro] Android P版本 新功能介绍和兼容性处理(三)Android Studio 3.0 ~ 3.2 其他特性...

cp : https://blog.csdn.net/yi_master/article/details/80067198 1&#xff1a;JAVA8特性支持 1&#xff09;Base64.java 在升级到as3.0之后&#xff0c;我们便可以使用Base64.java这个类了&#xff0c;这个类的在java.util.Base64包下&#xff1b;而android里面也有一个Bas…