算法leetcode|32. 最长有效括号(rust重拳出击)
admin
2024-05-13 21:22:32
0

文章目录

  • 32. 最长有效括号:
    • 样例 1:
    • 样例 2:
    • 样例 3:
    • 提示:
  • 分析:
  • 题解:
    • rust
    • go
    • c++
    • c
    • python
    • java


32. 最长有效括号:

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

样例 1:

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

样例 2:

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

样例 3:

输入:s = ""输出:0

提示:

  • 0 <= s.length <= 3 * 104
  • s[i]'('')'

分析:

  • 面对这道算法题目,二当家的陷入了沉思。
  • 只有小括号,判断有效是关键。
  • 从左向右看,左括号数始终大于等于右括号数,并且最终左右括号数相等。
  • 从右向左看,右括号数始终大于等于左括号数,并且最终左右括号数相等。

题解:

rust

impl Solution {pub fn longest_valid_parentheses(s: String) -> i32 {let (mut left, mut right, mut maxlength) = (0, 0, 0);s.as_bytes().iter().for_each(|&b| {if b == b'(' {left += 1;} else {right += 1;}if left == right {maxlength = maxlength.max(2 * right);} else if right > left {left = 0;right = 0;}});left = 0;right = 0;s.as_bytes().iter().rev().for_each(|&b| {if b == b'(' {left += 1;} else {right += 1;}if left == right {maxlength = maxlength.max(2 * left);} else if left > right {left = 0;right = 0;}});return maxlength;}
}

go

func longestValidParentheses(s string) int {max := func(x, y int) int {if x > y {return x}return y}left, right, maxLength := 0, 0, 0for i := 0; i < len(s); i++ {if s[i] == '(' {left++} else {right++}if left == right {maxLength = max(maxLength, 2*right)} else if right > left {left, right = 0, 0}}left, right = 0, 0for i := len(s) - 1; i >= 0; i-- {if s[i] == '(' {left++} else {right++}if left == right {maxLength = max(maxLength, 2*left)} else if left > right {left, right = 0, 0}}return maxLength
}

c++

class Solution {
public:int longestValidParentheses(string s) {int left = 0, right = 0, maxlength = 0;for (int i = 0; i < s.length(); ++i) {if (s[i] == '(') {left++;} else {right++;}if (left == right) {maxlength = max(maxlength, 2 * right);} else if (right > left) {left = right = 0;}}left = right = 0;for (int i = (int) s.length() - 1; i >= 0; --i) {if (s[i] == '(') {left++;} else {right++;}if (left == right) {maxlength = max(maxlength, 2 * left);} else if (left > right) {left = right = 0;}}return maxlength;}
};

c

int longestValidParentheses(char * s){const int len = strlen(s);int left = 0, right = 0, maxlength = 0;for (int i = 0; i < len; ++i) {if (s[i] == '(') {left++;} else {right++;}if (left == right) {maxlength = fmax(maxlength, 2 * right);} else if (right > left) {left = right = 0;}}left = right = 0;for (int i = len - 1; i >= 0; --i) {if (s[i] == '(') {left++;} else {right++;}if (left == right) {maxlength = fmax(maxlength, 2 * left);} else if (left > right) {left = right = 0;}}return maxlength;
}

python

class Solution:def longestValidParentheses(self, s: str) -> int:left, right, max_length = 0, 0, 0for i in range(len(s)):if s[i] == '(':left += 1else:right += 1if left == right:max_length = max(max_length, 2 * right)elif right > left:left, right = 0, 0left, right = 0, 0for i in range(len(s) - 1, -1, -1):if s[i] == '(':left += 1else:right += 1if left == right:max_length = max(max_length, 2 * left)elif left > right:left, right = 0, 0return max_length

java

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

非常感谢你阅读本文~
欢迎【点赞】【收藏】【评论】~
放弃不难,但坚持一定很酷~
希望我们大家都能每天进步一点点~
本文由 二当家的白帽子:https://le-yi.blog.csdn.net/ 博客原创~


相关内容

热门资讯

斗金订购APP贵金属期货投资被...   斗金订购APP的投资者被广告宣传给诱导,注册就送什么现金,然后充值返现金卷等等这些宣传方式,都是...
哈易购APP非法期货交易欺骗投...   哈易购APP宣传可做白银铂金贵金属订购交易,但实际上并没有取得相关交易资质!哈易购APP本质上就...
消息称百度旗下昆仑芯瞄准500... 6 月 29 日消息,据《The Information》昨日援引知情人士消息,百度旗下 AI 芯片...
打造夏日消费新场景 第35届北... 北京商报讯(记者 翟枫瑞)6月29日消息,第35届北京国际燕京啤酒文化节新闻发布会在京举行。本届啤酒...
社保基金持仓数据出炉,一季度增... 最近各大上市公司一季度财报都公开了,咱们国家社保基金的持仓数据也全部曝光。目前社保拿着比亚迪价值44...
36氪首发 | 海思、中兴团队... 作者 | 乔钰杰 编辑 | 袁斯来 硬氪获悉,广州宸思通讯科技有限公司(以下简称“宸思科技”)近日完...
两天蒸发47亿市值!一纸税务通... 一纸税务通知书,能让一家百亿龙头两天蒸发47亿市值。 6月22日,北大荒(600598.SH)公告称...
SK海力士将投资1100万亿韩... SK集团会长崔泰源6月29日在韩国“三大重大计划”发布会上宣布,公司将投资1100万亿韩元扩大半导体...
两只A股,终止上市! 两家A股公司,即将摘牌。 6月29日,退市沪科(600608.SH)公告称,上海证券交易所将在202...
原创 M... 一家成立近十年的自动驾驶公司,在IPO时吸引了14家基石投资者认购近一半的发行股份,其中不乏奔驰、比...
基金忠言|国寿安保滤镜碎,三年... 图片来源:视觉中国 蓝鲸新闻6月29日讯(记者 祁和忠)保险系基金公司国寿安保总经理换人了。 6月2...
三星电机计划加码玻璃基板!相关... 6月29日,玻璃基板概念股午后有所回升, 华工科技(000988.SZ)逼近涨停, 彩虹股份(600...
拉萨海关持续壮大外贸经营主体 ...   新华网拉萨6月28日电(记者蒋梦辰)近日,记者从拉萨海关获悉,今年前5个月,西藏有进出口实绩的外...
机构:二季报临近,医药生物板块... 6月29日,华源证券发布了一篇医药生物行业的研究报告,报告指出,业绩期临近,产业链景气度有望再次迎来...
每日收评科创50放量涨超4.5... 财联社6月29日讯,三大指数全线收红,创业板指探底回升,科创50指数大涨4.61%。沪深两市成交额3...
6月多地土拍结构性升温:深圳单... 进入2026年6月,不少城市核心区地块集中诞生高溢价宗地,热度突出的城市包含深圳、杭州、长沙。 其中...
业绩炸裂!盛达资源半年预盈3.... 6月29日,贵金属矿山龙头盛达资源(000603.SZ)发布 2026 年半年度业绩预告,上半年业绩...
A股午后拉升三大股指收涨:半导... A股三大股指6月29日开盘涨跌互现。早盘沪强深弱,创指一度跌超2%。半导体午后拉升,带动两市上涨,沪...
原创 空... 前言 大家好,我是老金。 这几天,两幅极度割裂的画面放在一起,把我看笑了。 一边是在持续的热浪下,欧...