LeetCode 32 Longest Valid Parentheses(最长有效括号)(*)
来源:互联网 发布:淘宝买黄牛票犯法吗 编辑:程序博客网 时间:2024/05/10 15:25
翻译
给定一个仅仅包含“(”或“)”的字符串,找到其中最长有效括号子集的长度。对于“(()”,它的最长有效括号子集是“()”,长度为2。另一个例子“)()())”,它的最长有效括号子集是“()()”,其长度是4。
原文
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.
代码
一开始我写啊写啊写……
class Solution {public:int longestValidParentheses(string s) { stack<char> brackets; int length = 0; int index = 0; while(index < s.size()) { if(brackets.empty()) { brackets.push(s[index]); ++ index; } else { if(brackets.top() == '(' && s[index] == ')') { length += 2; ++ index; brackets.pop(); } else { brackets.push(s[index]); ++ index; } } } return length;}};
结果发现我理解错了题意,比如说“()(()”这种,其长度应该是2为不是4,因为必须是连续的。我的思路又转换不过来了,就一直纠结……
我尝试把加“2”这个操作写在字符串中,然后对于括号的不连续在该字符串中用空格(” “)来打”断点“,最后对字符串进行解析。
然而最终还是没能写出来……又去求助了……
class Solution {public:int longestValidParentheses(string s) { stack<int> brackets; brackets.push(0); int res = 0; for(int i = 0; i < s.length(); ++ i) { if(s[i] == '(') { brackets.push(i + 1); } else { brackets.pop(); if(brackets.size()) { res = max(res, i + 1 - brackets.top()); cout<<brackets.top()<<endl;; } else { brackets.push(i + 1); } } } return res;}};
( ) ( ( ) 0 1 2 3 4i = 0 0,1i = 1 0 top = 0 res = 2i = 2 0,3 i = 3 0,3,4i = 4 0,3 top = 3 res = 2
好久没刷题了,继续努力……
2 0
- LeetCode 32 Longest Valid Parentheses(最长有效括号)(*)
- LeetCode--Longest Valid Parentheses(最长有效的括号)
- LeetCode | Longest Valid Parentheses(最长有效的括号匹配)
- LeetCode OJ 之 Longest Valid Parentheses (最长有效括号)
- LeetCode 32. Longest Valid Parentheses(最长有效括号)
- Longest Valid Parentheses(最长有效括号串)
- 【LeetCode-面试算法经典-Java实现】【032-Longest Valid Parentheses(最长有效括号)】
- 最长连续有效括号 Longest Valid Parentheses @LeetCode
- LeetCode----32. Longest Valid Parentheses(最长有效括号)
- LeetCode-32.Longest Valid Parentheses最长有效括号子串
- leetcode 32. Longest Valid Parentheses 最长有效括号长度
- Longest Valid Parentheses 最长的有效括号
- [LeetCode] 最长合法括号 longest valid parentheses
- 【LeetCode】最长括号匹配Longest Valid Parentheses
- 【LeetCode】- Valid Parentheses(有效的括号)
- 求最长有效匹配括号子串的长度(Longest Valid Parentheses)
- 栈——longest-valid-parentheses(最长有效括号长度)
- LeetCode: Longest Valid Parentheses (求最长有效匹配括号子串的长度)
- 查看手机的进程
- Linux中如何转换用户
- SSH中hibernate窍门总结
- Ten C++11 Features Every C++ Developer Should Use
- Excel学习小记
- LeetCode 32 Longest Valid Parentheses(最长有效括号)(*)
- 12.Laravel5学习笔记:使用mongodb开发LBS应用
- JFlow 入门,新手流程设计教程
- 给UILabel局部文字添加颜色
- Mtk camera driver
- 连接MySQL失败,错误代码10038
- C++11 新特性:Lambda 表达式
- BaseModel
- PyScripter显示行号