【leetcode】Longest Valid Parentheses
来源:互联网 发布:拳皇13steam出招优化 编辑:程序博客网 时间:2024/05/01 21:30
Question:
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.
Anwser 1 :
class Solution {public: int longestValidParentheses(string s) { // Start typing your C/C++ solution below // DO NOT write int main() function stack<int> S; for(int i = 0; i < s.size(); ++i){ // "(" if (s[i] == '(') { S.push(i); } else if (!S.empty()){ //')' s[i] = 'k'; s[S.top()] = 'k'; S.pop(); } } // example: "(()" = "(kk"; "(()()" = "(kkkk" int maxLength = 0; int length = 0; for(int i = 0; i < s.size(); ++i){ // count of "k" if (s[i] =='k'){ ++length; if (maxLength < length) { maxLength = length; } } else { length = 0; } } return maxLength; }};
Anwser 2 :
class Solution {public: struct node { char c; int idx; node() {} node(char _c, int _idx): c(_c), idx(_idx) {} }; int longestValidParentheses(string s) { // Start typing your C/C++ solution below // DO NOT write int main() function stack<node> st; st.push(node(')', -1)); int res = 0; for (int i = 0; i < s.size(); ++i) { char c = s[i]; if (c == '(') { st.push(node(c, i)); } else { node top = st.top(); if (top.c == '(') { st.pop(); res = max(res, i - st.top().idx); // count or length } else { st.push(node(c, i)); } } } return res; }};
- 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
- Android TextView自动换行文字排版参差不齐的原因及处理
- boolean在while作条件判断
- zjoi2013day1
- 带不来狼脑袋里的东西,带来的都是狼肚子里的东西,为哈哈再与西风战一场
- equals在while语句中做条件判断
- 【leetcode】Longest Valid Parentheses
- poj2001 从现在开始,我要做的足够 强大
- 【差分约束系统】刚领悟的一点点小分析
- 【leetcode】Generate Parentheses
- 陶陶摘苹果-rqnoj-12
- queue
- csapp2e 家庭作业 2.88
- malloc和new的区别
- 数据库-第三讲-关系数据模型