标签:right 有效 复杂度 括号 遍历 字符串 第三十二 LeetCode left
Longest Valid Parentheses
问题简介:给定一个只包含字符 ‘(’ 和 ‘)’ 的字符串,找到最长的有效括号子字符串的长度
举例:
1:
输入: “(()”
输出: 2
解释: 最长有效子字符串是 “()”
2:
输入: “)()())”
输出: 4
解释: 最长有效子字符串是"()()"
解法一:
暴力遍历:遍历字符串从i=0开始,count代表有效子字符串长度,截取子字符串,通过一个子方法isValid()判断是否是有效子字符串,这个方法思路是对的,但是当字符串足够长时会超时
复杂度分析:
时间复杂度:o(n3)截取字符串需要o(n2),检查一遍需要o(n)
空间复杂度:o(n)最长的子字符串就是o(n)
解法二:
在这种方法中,我们使用两个计数器left和right,首先,我们开始遍历从左到右的字符串,对于每个子字符串遇到’(’,我们增加left计数器和每个’)'我们增加right计数器,每当left等于right时,我们计算当前有效子字符串的长度并跟踪到目前为止找到的最大长度子字符串,如果right变得比left更大,我们将left和right重置为0.然后再从右向左遍历一遍
复杂度分析:
时间复杂度:o(n)
空间复杂度:o(1)
小白刷题之路,请多指教— — 要么大器晚成,要么石沉大海
标签:right,有效,复杂度,括号,遍历,字符串,第三十二,LeetCode,left 来源: https://www.cnblogs.com/lalalaczq/p/10823590.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。