JAVA学习-练习试用Java实现“最长有效括号”

问题:

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

示例 1:

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

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

输入:s = ""
输出:0
提示:

0 <= s.length <= 3 * 104
s[i] 为 '(' 或 ')'
以下程序实现了这一功能,请你填补空白处内容:

import java.util.*;class Solution {public int longestValidParentheses(String s) {int left = 0, right = 0, max = 0;for (int i = 0; i < s.length(); i++) {if (s.charAt(i) == '(')left++;elseright++;if (left == right)max = Math.max(max, left * 2);if (right > left)left = right = 0;}left = 0;right = 0;for (int i = s.length() - 1; i >= 0; i--) {__________________;if (left == right)max = Math.max(max, left * 2);if (right < left)left = right = 0;}return max;}
}


 

解答思路:

以下是填补空白处的代码:

if (s.charAt(i) == '(')right++;
elseleft++;

完整的代码如下:

import java.util.*;class Solution {public int longestValidParentheses(String s) {int left = 0, right = 0, max = 0;for (int i = 0; i < s.length(); i++) {if (s.charAt(i) == '(')left++;elseright++;if (left == right)max = Math.max(max, left * 2);if (right > left)left = right = 0;}left = 0;right = 0;for (int i = s.length() - 1; i >= 0; i--) {if (s.charAt(i) == '(')right++;elseleft++;if (left == right)max = Math.max(max, left * 2);if (right < left)left = right = 0;}return max;}
}

这段代码的思路是:通过两次遍历字符串,一次从左到右,一次从右到左。在每次遍历中,分别统计左括号和右括号的数量,当左右括号数量相等时,更新最长有效括号子串的长度。如果在某次遍历中右括号数量大于左括号数量(从左到右遍历)或左括号数量大于右括号数量(从右到左遍历),则将左右括号的计数器重置为 0。这样,通过两次遍历可以覆盖所有可能的有效括号子串情况,从而得到最长有效括号子串的长度。
(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从简单到复杂:9款画底纹软件让设计更生动

底纹不知道怎么画&#xff1f;快来试一试这9款软件吧&#xff0c;可以让你的设计作品更加出彩&#xff0c;相信我&#xff0c;用了就是赚到&#xff0c;分别是即时设计、Adobe Illustrator、CorelDRAW、Photoshop、AutoCAD、Inkscape、GIMP、ZebraDesigner、LabelJoy。 1、即时…

软件定义AI算力:解锁AI算力的新时代

从1964年发明CPU——即IBM System 360发布的那一年算起&#xff0c;已经过去60年&#xff0c;我们已经从传统的CPU算力时代跨越到了以GPU算力为代表的加速计算时代。尤其是随着大模型的广泛应用和AIGC技术的崛起&#xff0c;行业对GPU等AI算力的需求呈现出爆炸式的增长。据华为…

7.29爬虫修复

1、加密算法sha、与时间加密。f12前端页面&#xff0c;所有文件中查询到指定字段。 2、加锁维护token或jwt之类的凭证&#xff0c;双if嵌套判断 3、熟悉公司整体项目框架&#xff0c;前端、nginx服务器&#xff0c;后端服务器 4、scrapy的爬虫过滤&#xff0c;注意重复url在src…

微短剧出海CPS分销推广影视平台系统搭建思维逻辑介绍

随着国内短剧市场的蓬勃发展&#xff0c;其独特的魅力与影响力已跨越国界&#xff0c;成为海外观众的新宠。这一趋势不仅推动了短剧内容的全球化传播&#xff0c;也为海外市场的CPS&#xff08;按销售分润&#xff09;分销模式提供了广阔舞台。连接内容创作者、平台运营者、系统…

HIVE调优方式及原因

3.HIVE 调优&#xff1a; 需要调优的几个方面&#xff1a; 1.HIVE语句执行不了 2.HIVE查询语句&#xff0c;在集群中执行时&#xff0c;数据无法落地 HIVE执行时&#xff0c;一开始语句检查没有问题&#xff0c;生成了多个JOB&#xff0c; …

VMware 的网络模式详解

VMware 的网络模式详解 使用 VMware 创建虚拟机&#xff0c;配置虚拟机网络时&#xff0c;主要有三个选项&#xff0c;分别是桥接模式、NAT 模式、仅主机模式 这三个模式到底有什么含义&#xff1f; VMware 是通过虚拟网络&#xff0c;即虚拟交换机&#xff0c;来连接物理机&…

泥球代码是什么,如何预防?typescript例

“泥球代码”&#xff08;Spaghetti Code&#xff09;通常是指结构混乱、复杂度高且难以理解或维护的代码。这样的代码往往缺乏清晰的设计和规划&#xff0c;看起来就像一团乱糟糟的意大利面&#xff0c;因此得名。 在软件开发中&#xff0c;避免产生泥球代码是非常重要的&…

angular入门基础教程(五)父子组件的数据通信

组件之间的通信是我们业务开发中少不了的,先了解下父子组件的通信 父组件传数据给子组件 前面&#xff0c;我们学会会动态属性的绑定&#xff0c;所以在父组件中给子组件绑定属性&#xff0c;在子组件中就可以使用这个属性了。 父组件中声明然后赋值 export class AppCompon…

设计模式-备忘录

备忘录&#xff08;Memento&#xff09;设计模式是为了保存对象当前状态&#xff0c;并在需要的时候恢复到之前保存的状态。以下是一个简单的C#备忘录模式的实现&#xff1a; // Originator 类&#xff0c;负责创建和恢复备忘录 class Originator {private string state;publi…

智能开关助力酒店管理提升

随着科技的迅猛跃进&#xff0c;智能化浪潮席卷全球&#xff0c;酒店业亦不例外地迎来了智能化转型的新纪元。智能开关&#xff0c;作为这股浪潮中的先锋&#xff0c;凭借其尖端的通信技术和智能控制逻辑&#xff0c;正深刻改变着酒店的运营模式与顾客体验。 它不仅赋予了酒店远…

如何理解tcp的三次握手?

TCP&#xff08;传输控制协议&#xff09;是一种网络通信协议&#xff0c;用于可靠地传输数据。它是互联网协议套件&#xff08;TCP/IP&#xff09;中的一部分&#xff0c;负责将数据分割成小块&#xff08;称为数据包&#xff09;&#xff0c;通过网络传输&#xff0c;然后在接…

IP地址证书签发之后可以绑定到指定端口访问吗?

IP地址证书概述 IP地址证书&#xff0c;也称为IP SSL证书&#xff0c;是为互联网协议(IP)地址提供安全认证的一种证书。它包含公钥、所有者信息以及由可信的证书颁发机构(CA)签发的数字签名。通过使用公钥基础设施(PKI)&#xff0c;IP地址证书确保了网络实体之间的信任和验证。…

语音合成大模型汇总

https://www.speechhome.com/blogs/news/1810969234071752704 阿里CosyVoice&#xff1a; https://github.com/FunAudioLLM/CosyVoice NeuCo v2声音克隆首发&#xff0c;一键AI翻唱&#xff0c;无需训练&#xff01;在线版SoVITS&#xff0c;在线使用&#xff0c;只需10秒音频…

React基础知识 精简全面 推荐

这篇博文主要对一些刚入门react框架的同学&#xff0c;以及对react基本知识进行巩固的&#xff0c;最后就是精简一下基本知识&#xff0c;以方便自己查看&#xff0c;感谢参考&#xff0c;有问题评论区交流&#xff0c;谢谢。 目录 1.JSX 2.Props 和 State 3.组件生命周期…

基于JAVA的美妆购物商城系统/美妆销售系统的设计与实现/美妆网站的设计与开发/在线美妆购物平台

摘 要 本毕业设计的内容是设计并且实现一个基于SSM框架的美妆购物商城系统。它是在Windows下&#xff0c;JSP技术&#xff0c;以MYSQL为数据库开发平台&#xff0c;Tomcat网络信息服务作为应用服务器。美妆购物商城系统的功能已基本实现&#xff0c;主要包括用户、商品信息、…

2024电赛H题参考方案(+视频演示+核心控制代码)——自动行使小车

目录 一、题目要求 二、参考资源获取 三、参考方案 1、环境搭建及工程移植 2、相关模块的移植 4、整体控制方案视频演示 5、视频演示部分核心代码 总结 一、题目要求 小编自认为&#xff1a;此次H题属于控制类题目&#xff0c;相较于往年较为简单&#xff0c;功能也算单一&…

科普文:『 码到三十五 』Java微服务中Token鉴权设计的4种方案

吐槽~~~~~~~ Java微服务中Token鉴权设计的几种方案: 1. JWT鉴权 「概述」&#xff1a;JWT是一种用于双方之间安全传输信息的简洁的、URL安全的令牌标准。它基于JSON格式&#xff0c;包含三个部分&#xff1a;头部&#xff08;Header&#xff09;、负载&#xff08;Payload&a…

ubuntu Ubuntu 20.04.6 LTS 安装vtk 报错缺少opengl

ubuntu编译9.3.0 vtk报错 -- Could NOT find OpenGL (missing: OPENGL_opengl_LIBRARY OPENGL_glx_LIBRARY OpenGL) CMake Error at CMake/vtkModule.cmake:4793 (message): Could not find the OpenGL external dependency. Call Stack (most recent call first): CMake/vtkMo…

typescript 断言

/* 断言 确定后期一定是某种格式 可用于表单大对象初始化是空&#xff0c;赋值时有具体字段。前期断言是会是某种格式 */interface obj {name: stringlocation: stringage?: number }// 会报错 // let data: obj { // // } let data: obj {} as obj; // 断言data会有obj里…

PHP框架详解之Symfony框架

一、框架概述 起源与开发者&#xff1a;Symfony由SensioLabs&#xff08;现为Symfony公司&#xff09;开发&#xff0c;最初由Fabien Potencier于2005年创建。功能定位&#xff1a;Symfony通过提供一套可重用的组件和标准化的框架&#xff0c;帮助开发者快速构建Web应用、API、…