[Leetcode] Longest Valid Parentheses

找出字串裡最長的合法括號組

簡單說,一樣stack搜尋合法parenth,把不合法的 ( & ) index 紀錄下來,最後算index間的差值取最大就是最長的

 

public class Solution{/// <summary>/// 把不合法的'(' ')'的index記下來,取最長的差值就是/// </summary>/// <param name="s"></param>/// <returns></returns>public int LongestValidParentheses(string s){char[] aaa = s.ToCharArray();int aaaLength = aaa.Length;s = null;//有剩下的'('就是不合法的Stack<int> notLeftMatched = new Stack<int>();//不合法的')'List<int> notMatched = new List<int>();int tempCount = 0;int resultCount = 0;int popCount = 0;int j = 0;for (int i = 0; i < aaa.Length; i++){j = i;if (aaa[i] == '('){//存的是1為base的indexnotLeftMatched.Push(++j);}else if (aaa[i] == ')' ){//有'('可以配對if(notLeftMatched.Count > 0){notLeftMatched.Pop();popCount++;}else{//沒有就表示是個斷點')' 記下來notMatched.Add(++j);}}}int[] all = new int[notLeftMatched.Count + notMatched.Count];notMatched.CopyTo(all);notLeftMatched.CopyTo(all, notMatched.Count);//不合法的'(' ')'組成一個陣列後排序all = all.OrderBy(x => x).ToArray();notLeftMatched = null;notMatched = null;aaa = null;int afterIndex = aaaLength;///算斷點間的差值if (all.Length > 0 && popCount > 0){for (int i = all.Length - 1; i >= 0; i--){//取得最後一個if(i == all.Length - 1){afterIndex = all[i];continue;}//不包含自已 再扣1//例如在1跟4之間合法的就只有2 3 所以是 4 -1 -1tempCount = afterIndex - all[i] -1;if (tempCount > resultCount){resultCount = tempCount;}afterIndex = all[i];}//算第一個斷點跟最後一個斷點跟字元陣列頭尾的差值//例如長10 斷點是 2 5 7 那還有7-10 , 1-2之間的長度要算//算尾tempCount = aaaLength - all[all.Length -1];if (tempCount > resultCount){resultCount = tempCount;}//算頭tempCount = all[0] - 1;if (tempCount > resultCount){resultCount = tempCount;}}else{resultCount = popCount * 2;}all = null;return resultCount;}}

 

转载于:https://www.cnblogs.com/seako/p/10674574.html

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

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

相关文章

[deviceone开发]-do_Album的简单示例

一、简介do_Album用来打开手机系统提供的相册&#xff0c;能选择一张或多张图片返回给开发者&#xff0c;通常相册的图片比较大&#xff0c;要经过缩放。有的时候用户也需要把别的地方获取到到图片收藏到系统相册。这个示例简单展示这个组件的2个基本功能。二、效果图三、相关下…

公办低分二本_这六所公办二本高校的计算机类相关专业值得低分段考生选择

邯郸学院——计算机科学与技术近年来&#xff0c;邯郸学院着力强化“以本为本”理念,坚持“学生中心”“产出导向”原则&#xff0c;加强学科专业建设&#xff0c;获批国家级特色专业1个&#xff0c;省级重点发展学科3个&#xff0c;省级一流专业7个&#xff0c;英语等3个专业入…

Ubuntu 14.04 FTP服务器--vsftpd的安装和配置

更新源列表 打开"终端窗口"&#xff0c;输入"sudo apt-get update"-->回车-->"输入当前登录用户的管理员密码"-->回车,就可以了。如果不运行该命令&#xff0c;直接安装vsftpd,会出现"有 几个软件包无法下载&#xff0c;您可以运…

校验电话号码 手机号码正则表达式

2019独角兽企业重金招聘Python工程师标准>>> 电话号码 手机号码 等准确详细 正则表达式电话号码正则表达式 &#xff08;支持手机号码&#xff0c;3-4位区号&#xff0c;7-8位直播号码&#xff0c;1&#xff0d;4位分机号&#xff09; ((\d{11})|^((\d{7,8})|(\d{4}…

期刊投稿状态_SCI投稿全过程解析及拒稿后处理对策

之前给大家介绍了如果使用人工智能来提高SCI写作效率的神器&#xff0c;相信大家对SCI写作已经很有信心了。但有些小伙伴后台说对投稿过程很没有概念&#xff0c;不同期刊不同状态。那么今天我们就对SCI投稿过程、投稿状态做一个总结和解析以及拒稿后处理对策及接受后期相关问答…

运用Appium 实现添加微信好友自动化

本文为原创文章&#xff0c;如需转载请注明出处. 任务&#xff1a;实现批量添加微信好友自动化。 任务分析&#xff1a;1.首先要实现添加单个好友步骤自动化。 2.实现脚本读取Excel里的值。 3.参数化好友电话号码或者昵称。 PS:代码采用POM(Page Object Model)便于后续维护 数…

pdf.js浏览中文pdf乱码的问题解决

由于项目中需要支持移动设备在线浏览pdf&#xff0c;苹果还好&#xff0c;天生支持&#xff0c;但是安卓中就不行了&#xff0c;需要第三方组件的支持。 这里就找到了pdf.js&#xff0c;由于pdf数据太多&#xff0c;开始的时候没法一一测试&#xff0c;所以随便测试打开了几篇没…

【效率专精系列】善用API统一描述语言提升RestAPI开发效率

团队内部RestAPI开发采用设计驱动开发的模式&#xff0c;即使用API设计文档解耦前端和后端的开发过程&#xff0c;双方只在联调与测试时耦合。在实际开发和与前端合作的过程中&#xff0c;受限于众多因素的影响&#xff0c;开发效率还有进一步提高的空间。本文的目的是优化工具…

数据包提取文件_航测怎样高效提取无人机POS航点数据

无限创新工作室研发的POS数据记录仪是一款采集飞控POS 数据并管理的设备&#xff0c;它将飞控 POS 点数据进行记录&#xff0c;形成单独的POS 数据记录TXT 文本&#xff0c;并独立存储于内存卡&#xff0c;可通过USB、U 盘或内存卡形式对数据进行读取。通过对相机进行拍照控制和…

开始时间小于 结束时间 js_DNF分享红包开始及结束时间 红包有什么奖励相关介绍...

[闽南网]DNF分享红包分享快乐时间从2019年的1月3日开始到1月21日前结束&#xff0c;活动期间玩家每天登录游戏可以得到一个新年红包&#xff0c;使用后可以为同一个频道的玩家送去祝福&#xff0c;根据送出红包的数量得到不同的奖励。(dnf幸运饺子铺活动)(DNF95版新副本攻略)本…

SQL 邮件配置篇

在我们运维工作中&#xff0c;经常要对备份&#xff0c;ETL等作业进行监控&#xff0c;这时我们需要用到SQL SERVER自带的邮件服务器&#xff0c;其原理&#xff0c;我在这么里不多说&#xff0c;直接来实战&#xff0c;下面是我对服务器配置源码&#xff0c;分享给大家&#x…

汽车之家的安全框架,是如何从0到1搭建的?

“别人家的安全”是安全威胁情报&#xff08;微信ID&#xff1a;Threatbook&#xff09;近期推出的一档专栏。 合规、管理、构建、应急……安全问题千千万&#xff0c;层出不穷。我们没办法给出这些问题的标准答案&#xff0c;但我们可以用Case Study的形式&#xff0c;让你看看…

《网络空间欺骗:构筑欺骗防御的科学基石》一1.1 主动网络空间防御中网络空间抵赖与欺骗的视图...

1.1 主动网络空间防御中网络空间抵赖与欺骗的视图 本文讲的是网络空间欺骗&#xff1a;构筑欺骗防御的科学基石一1.1 主动网络空间防御中网络空间抵赖与欺骗的视图,将抵赖与欺骗纳入标准操作规程&#xff08;SOP&#xff09;&#xff1a;随着攻击技术的不断演进&#xff0c;网…

揭开勒索软件的真面目

一、前言 2013年9月&#xff0c;戴尔公司的SecureWorks威胁应对部门&#xff08;CTU&#xff09;发现了一种名为“CryptoLocker”的勒索软件&#xff0c;它以邮件附件形式分发&#xff0c;感染计算机并加密近百种格式文件&#xff08;包括电子表格、数据库、图片等&#xff09;…

Java中的阻塞队列-LinkedBlockingQueue(二)

原文地址&#xff1a;http://benjaminwhx.com/2018/05/11/%E3%80%90%E7%BB%86%E8%B0%88Java%E5%B9%B6%E5%8F%91%E3%80%91%E8%B0%88%E8%B0%88LinkedBlockingQueue/ 在集合框架里&#xff0c;想必大家都用过ArrayList和LinkedList&#xff0c;也经常在面试中问到他们之间的区别。…

碳钢腐蚀速率计算公式_镁合金轮毂螺栓连接的电偶腐蚀行为

环境污染和能源短缺促使日益发达的汽车工业大力推进构件轻量化&#xff0c;镁合金是最轻的结构材料之一&#xff0c;构件采用镁合金制造可以在减重的同时不降低结构强度&#xff0c;受到汽车工业的青睐。轮毂作为汽车的主要组成部件&#xff0c;其轻量化是汽车节能减排的有效途…

避免人为灾难:盘点数据中心里十大愚蠢行为

对于企业运营&#xff0c;数据中心从设计、部署等各个环节都有极其严格的规范&#xff0c;保证简单的“题目”不出错也需要企业IT管理人员的智慧&#xff0c;在数据中心任何一个小错误往往会带来巨大灾难。数据中心从设计、部署、测试、运行、运维等各个环节都不能有任何的疏忽…

leetcode1039. 多边形三角剖分的最低得分(动态规划)

给定 N&#xff0c;想象一个凸 N 边多边形&#xff0c;其顶点按顺时针顺序依次标记为 A[0], A[i], …, A[N-1]。 假设您将多边形剖分为 N-2 个三角形。对于每个三角形&#xff0c;该三角形的值是顶点标记的乘积&#xff0c;三角剖分的分数是进行三角剖分后所有 N-2 个三角形的…

thinkcmf 横向排列数据_利用python进行数据分析之数据清洗规整

1.处理缺失值数据使用dropna()时&#xff0c;注意里面参数axis、how、thresh的用法使用fillna()时&#xff0c;注意里面参数value、method、inplace、limit的用法2.数据转换去重data.drop_duplicates(keeplast)#注意keep的用法映射map&#xff08;&#xff09;针对的是一维数组…

v$asm_diskgroup中state的说明

1.使用oracle账号连接数据库&#xff0c;查看v$asm_diskgroup 2.使用grid账号连接ASM实例&#xff0c;查看v$asm_diskgroup 3.官方v$asm_diskgroup关于state的解释 https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/V-ASM_DISKGROUP.html#GUID-5CF77719-7…