leetcode Longest Valid Parentheses
来源:互联网 发布:js获取子节点多一个 编辑:程序博客网 时间:2024/06/07 14:18
Longest Valid Parentheses
Total Accepted: 4153 Total Submissions: 22587My SubmissionsGiven 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.
每次操作栈和其他容器的时候都要注意是否为空。
这道题的计算要注意,如何才能得到当前最长valid parentheses。
int longestValidParentheses(string s) {stack<int> stk;int len = 0;for (int i = 0; i < s.length(); i++){if (s[i] == '(') stk.push(i);else{if (stk.empty()) stk.push(i);else{if (s[stk.top()] == '('){stk.pop();if (stk.empty()) len = max(len, i+1);else len = max(len, i-stk.top());}else stk.push(i);}}}return len;}
巧妙地利用栈,保留下标,然后根据条件判断,逐步计算出结果。
分支条件有三到四个,也挺容易出错的题目。
- class Solution {
- public:
- int longestValidParentheses(string s)
- {
- int n = s.length();
- stack<int> stk;
- int longestLen = 0;
- for (int i = 0; i < n; i++)
- {
- if (s[i] == '(') stk.push(i);
- else
- {
- if (stk.empty())
- {
- stk.push(i);
- }
- else
- {
- if (s[stk.top()] != '(')
- stk.push(i);
- else
- {
- stk.pop();
- //居然会漏了max写成maxLen = (maxLen, i+1)
- if (stk.empty()) longestLen = max(longestLen, i+1);
- else longestLen = max(longestLen, i-stk.top());
- }
- }
- }
- }
- return longestLen;
- }
- };
1 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
- 文档编写那些可能你不知道的事
- onDraw 中使用canvas画线
- appium搭建及要求---在 Mac 上配置 Appium
- 嵌入式linux 随笔
- kettle部署到linux服务器
- leetcode Longest Valid Parentheses
- CLLocation 定位
- Android Design版微信的界面风格
- c# 扑克牌程序(1) 一副扑克牌可以选择是否包含大小王
- Collections.unmodifiableList()用法
- C# 属性和公有变量区别
- OpenGL ES2.0 学习之旅(Pre 1)
- JDBC SQL组装 显示标识符无效
- PreferencesUtils