【Hot100】LeetCode—32. 最长有效括号

目录

  • 1- 思路
    • 题目识别
    • 动态规划
  • 2- 实现
    • 32. 最长有效括号——题解思路
  • 3- ACM 实现


  • 原题链接:32. 最长有效括号

1- 思路

题目识别

  • 识别1 :给定一个字符串 s ,求解 s 中的最长有效括号

动态规划

动态规划五部曲

  • 递推公式难
  • 如果遇到了 s.charAt(i) == ')' 开始递推
  • 先求解 preIndex = i - dp[i-1] - 1
    • 保证 preIndex >= 0 && s.charAt(preIndex) == '('
    • dp[i] = 2 + dp[i-1];
    • if(preIndex -1 >= 0) { dp[i] += dp[preIndex-1];}

2- 实现

32. 最长有效括号——题解思路

在这里插入图片描述

class Solution {public int longestValidParentheses(String s) {int len = s.length();if(len==0){return 0;}int res = 0;// 定义 dp数组// 有效括号长度int[] dp = new int[len];// 递推// preIndex = i - dp[i-1] -1;// if(preIndex >= 0 && s.charAt(preIndex == '('))// dp[i] = 2+dp[i-1];// if(preIndex - 1 >= 0 ) dp[i]+=dp[preIndex-1];// 3.初始化// 4.遍历for(int i = 1 ; i < len ; i++){if(s.charAt(i) == ')'){int pre = i - dp[i-1]-1;if(pre>=0 && s.charAt(pre)=='('){dp[i] = 2 + dp[i-1];if(pre - 1 >=0 ){dp[i] += dp[pre-1];}}}res = Math.max(res,dp[i]);}return res;}
}

3- ACM 实现

import java.util.Scanner;public class longestKH {public static int longestS(String str){int len = str.length();// 定义dpint[] dp = new int[len];int res = 0;// 递推// 当前为右括号// 求解 pre = i - dp[i-1] -1;// 如果 pre>=0 && s.charAt(pre) == '('  {dp[i] = 2 + dp[i-1];}// 3. 初始化// 4.遍历for(int i = 1 ; i < len;i++){if(str.charAt(i) == ')'){int preIndex = i - dp[i-1] - 1;if(preIndex>=0 && str.charAt(preIndex) == '('){dp[i] = 2 + dp[i-1];if(preIndex-1>=0){dp[i] += dp[preIndex-1];}}res = Math.max(res,dp[i]);}}return res;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);String input = sc.nextLine();System.out.println("结果是"+longestS(input));}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/142708.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

如何在Linux下升级R版本和RStudio

一、升级R版本 在Linux上&#xff0c;R的安装通常通过包管理器完成。不同的Linux发行版&#xff08;如Ubuntu、Debian、Fedora等&#xff09;可能略有不同。下面以Ubuntu为例&#xff0c;介绍如何升级R版本。如果你使用其他发行版&#xff0c;步骤可能类似。 二.更新步骤 2.…

MySQL —— 视图

概念 视图是一张虚拟的表&#xff0c;它是基于一个或多个基本表或其他视图的查询结果集。 视图本身不存储数据&#xff0c;而是通过执行查询来动态生成数据&#xff0c;用户可以像操作普通表一样使用视图来进行查询更新与管理等操作。 视图本身也不占用物理存储空间&#xf…

NC 排序

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 给定一个长度…

时序约束进阶三:Create_clock与Create_Generated_Clock详解

目录 一、前言 二、生成时钟 2.1 示例设计 2.2 主时钟约束 1&#xff09;约束对象解析 2&#xff09;约束到非时钟位置 2.3 生成时钟约束 1&#xff09;无约束 2&#xff09;倍频约束 3&#xff09;生成时钟的主时钟约束不正确 4&#xff09;使能时钟控制的约束 5&…

格式化u盘选择FAT还是NTFS U盘和硬盘格式化两者选谁

Mac用户在将U盘或硬盘进行格式化时&#xff0c;选择FAT还是NTFS往往是一个让人纠结的问题。很多用户不知道这两个格式之间有什么区别&#xff0c;更不知道在格式化时如何做出选择。本文将为大家介绍Mac选择FAT还是NTFS&#xff0c;并为大家推荐U盘和硬盘格式化两者选谁。 一、…

OpenCVHaar级联器实现人脸捕捉和微笑检测

概念 Haar 级联分类器是由多个简单分类器组成的复杂分类器&#xff0c;每个简单分类器都由 Haar 特征训练得到。Haar 级联器因其简单和快速而被应用于某些场景。OpenCV 提供多种预训练的 Haar 特征级联分类器&#xff0c;其已经在大量图像上进行了训练&#xff0c;并且针对特定…

【程序员写的诗】《悔思践》日期:2017-05-20 作者:橙 附:AI豆包点评和解释

悔思践 《悔思践》 日期&#xff1a;2017-05-20 作者&#xff1a;橙 问君心&#xff0c;愁几何。 望空杯&#xff0c;颜现愁。 苦衷苦&#xff0c;鸿志立。 乐中乐&#xff0c;断践行。 不践行&#xff0c;愁中悔。 悔中望&#xff0c;年已高。 鸿志行&#xff0c;行中思。 苦…

SH17:个人防护设备检测数据集(猫脸码客 第189期)

SH17 Dataset for PPE Detection 一、引言 在当今快速发展的工业社会中&#xff0c;工作场所事故仍频繁发生&#xff0c;对人类安全构成重大威胁&#xff0c;尤其是在建筑、制造等高风险行业中。为了有效减少这些事故带来的伤害&#xff0c;个人防护设备&#xff08;Personal…

不止于纸上谈兵,用代码案例分析如何确保RabbitMQ消息可靠性?

文章目录 文章导图可靠性分析-RabbitMQ 消息丢失的三种情况生产者发送可靠性消息实现2种方式1、采用事务消息事务消息投递方案设计1、本地库创建一个消息表(t_msg)2、事务消息投递的过程知识点拓展&#xff1a;Spring事务同步器 3、异常情况4、消息投递补偿job 核心代码讲解发送…

PyQt5-loading-圆环加载效果

效果预览 代码实现 from PyQt5.QtCore import QSize, pyqtProperty, QTimer, Qt, QThread, pyqtSignal from PyQt5.QtGui import QColor, QPainter from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QPushButton, QVBoxLayout, QLabel, QGridLayoutclass Cir…

2024ICPC网络赛1: C. Permutation Counting 4

题意&#xff1a; 给定 n n n个区间 [ L i , R i ] [L_i,R_i] [Li​,Ri​]设集合 A { { p i } ∣ p i 为排列&#xff0c; L i < p i < R i } A\{ \{ p_i\} | p_i为排列&#xff0c;Li<p_i<R_i\} A{{pi​}∣pi​为排列&#xff0c;Li<pi​<Ri​}&#xff…

Facebook直播限流是什么原因?是ip地址导致的吗

随着社交媒体和直播行业的蓬勃发展&#xff0c;Facebook直播已成为众多企业和个人进行品牌推广、产品展示和互动交流的重要平台。然而&#xff0c;在享受直播带来的便利与效益的同时&#xff0c;不少用户也面临着直播限流的困扰。本文将探讨Facebook直播限流的原因&#xff0c;…

京东App秒级百G日志传输存储架构设计与实战

本文作者&#xff1a;平台业务研发部-武伟峰&#xff0c;数据与智能部-李阳 背景 在日常工作中&#xff0c;我们通常需要存储一些日志&#xff0c;譬如用户请求的出入参、系统运行时打印的一些info、error之类的日志&#xff0c;从而对系统在运行时出现的问题有排查的依据。 …

8.1 溪降技术:横渡绳

目录 8.1 横渡绳将其置于上下文中&#xff1a;观看视频课程电子书&#xff1a;横渡绳一级横渡绳&#xff1a;识别使用横渡绳固定到横渡绳V7提示&#xff1a;保持张力中间点通过横渡绳上的中间点固定到锚点总结 8.1 横渡绳 绳上移动 横渡绳是一条水平安全绳&#xff0c;探险者可…

Leetcode—移除链表元素

题目描述 思路 创建新链表&#xff0c;将原链表中的值不为val的结点尾插到新链表中 画图解释 定义一个指针pcur去遍历原链表&#xff0c;创建一个空链表&#xff0c;newHead和newTail在初始情况指向空。 pcur遍历原链表不为val的结点尾插到新链表中 完整代码 /*** Definitio…

分治算法归并排序

分治算法 基本概念 把一个复杂的问题分成两个或更多的相同或相似的子问题&#xff0c;再把子问题分成更小的子问题…直到最后子问题可以简单的直接求解&#xff0c;原问题的解即子问题的解的合并。 分治法的基本步骤 分治法在每一层递归上都有三个步骤&#xff1a; step1分…

Linux内核(Kernel)启动过程分析

文章目录 Linux内核&#xff08;Kernel&#xff09;启动过程一、内核启动的基本流程1. 启动加载程序 (Bootloader)2. 内核解压阶段3. 内核启动&#xff08;Kernel Startup&#xff09;4. start_kernel函数5. 启动初始进程 二、内核文件加载及解压缩1.为什么是压缩文件2.文件类型…

找搭子是什么意思?有没有找搭子的平台?靠谱找搭子软件推荐!

“找搭子” 指寻找在特定活动或兴趣方面有共同爱好的伙伴。比如饭搭子一起吃饭&#xff0c;运动搭子共同健身。它满足人们在特定场景下的社交需求&#xff0c;让生活更丰富有趣&#xff0c;是一种新型社交方式。以下是国内排名靠前的找搭子平台 1. 咕哇找搭子小程序&#xff1a…

Bio-Linux-shell详解-2-基本Shell命令快速掌握

Bio-Linux-shell详解-1-从0开始-CSDN博客 想了解基本知识可以先看上文&#xff0c;本次我们讲述一些Shell的基本命令。 目录 1.shell输入命令 2.man命令查看说明文档 3.文件查看命令 &#xff08;1&#xff09;linux文件结构 &#xff08;2&#xff09;cd切换工作目录 &…

SOCKS4和SOCKS5的区别是什么?

SOCKS4和SOCKS5是两种常用的网络代理协议&#xff0c;它们在功能、性能和应用场景上存在一些关键的区别。以下是对这两种协议区别的详细解析&#xff1a; 1. 支持的协议类型 SOCKS4&#xff1a;只支持TCP协议&#xff08;传输控制协议&#xff09;。这意味着SOCKS4代理只能用…