[LeetCode] Longest Valid Parentheses
来源:互联网 发布:网络匿名短信免费版 编辑:程序博客网 时间:2024/06/05 14:13
Longest Valid Parentheses
Given a string containing just the characters '('
and ')'
, find the length of the longest valid (well-formed) parentheses substring.
For "(()"
, the longest valid parentheses substring is "()"
, which has length = 2.
Another example is ")()())"
, where the longest valid parentheses substring is "()()"
, which has length = 4.
解题思路:
题意找到最长有效括号的子串长度。求最大问题,第一想法就是动态规划,但是,通项公式真不好找。喜刷刷http://bangbingsyb.blogspot.jp/2014/11/leetcode-longest-valid-parentheses.html中有相关说明,我没有理解,。
由于是括号问题,可以用栈来实现。这跟判断栈是否有效不同。注意到,若某个右括号不与前面的某个左括号匹配,那么,这个右括号可以作为子串分割标记。大体思想是,若遇到左括号,无条件将左括号的下标入栈。若遇到右括号,若栈顶是左括号与之匹配,将左括号出栈,更新最大的长度值。若栈顶没有左括号与之匹配,将该右括号的下标入栈,作为分割字符。代码如下:
class Solution {public: int longestValidParentheses(string s) { int len=s.length(); stack<int> st; int maxLen=0; for(int i=0; i<len; i++){ if(s[i]=='('){ st.push(i); }else{ if(!st.empty()&&s[st.top()]=='('){ st.pop(); maxLen = max(maxLen, st.empty()?i+1:i-st.top()); }else{ st.push(i); } } } return maxLen; }};
0 0
- LeetCode: Longest Valid Parentheses
- LeetCode Longest Valid Parentheses
- LeetCode: Longest Valid Parentheses
- [Leetcode] Longest Valid Parentheses
- [leetcode]longest Valid Parentheses(!!)
- [Leetcode] Longest Valid Parentheses
- leetcode Longest Valid Parentheses
- 【leetcode】Longest Valid Parentheses
- [LeetCode]Longest Valid Parentheses
- [leetcode] Longest Valid Parentheses
- LeetCode-Longest Valid Parentheses
- [LeetCode] Longest Valid Parentheses
- LeetCode:Longest Valid Parentheses
- Leetcode: Longest Valid Parentheses
- Leetcode:Longest Valid Parentheses
- leetcode Longest Valid Parentheses
- leetcode Longest Valid Parentheses
- LeetCode Longest Valid Parentheses
- Stax解析XML的简单实例
- MATLAB画系统函数零极点以及幅频特性
- Mac下利用Octopress和Github搭建自己的技术博客
- 三月份找工作的总结和对新工作的期望
- js中的数组
- [LeetCode] Longest Valid Parentheses
- C++ 对象的内存布局
- springMVC+mongodb整合(morphia)
- 安卓键盘属性windowSoftInputMode透析
- mac os 10.10.3 安装rails & Nokogiri
- ssh无密码登录
- poj 2386 Lake Counting
- 为什么需要拷贝(复制)构造函数
- Oracle 创建作业JOB的例子