LeetCode(32)--Longest Valid Parentheses
来源:互联网 发布:单片机什么是硬件,软件 编辑:程序博客网 时间:2024/06/05 14:54
这道题可以借用前面的括号匹配的思路,使用栈来解决。这次,我们压入栈的不再是‘(’或者‘)’,而是它的索引值。
大致思路如下:
遍历字符串s,当当前字符是‘(’,则压入栈中;若是‘)’,则判断栈顶是否为‘(’,若是则将栈顶的‘(’弹出,若不是则压入栈中。最后栈中剩下的数字就是不能匹配的‘(’和‘)’的索引值。
例如:”)()())()()(”
最后栈中剩余值为“0 5 10”
说明0~5之间的4个字符成功匹配,5~10之间的4个自付成功匹配。
由此可见,计算两个索引值之间的间距即为匹配成功的字符串长度,我们可以计算出所有的长度,并返回最长的那个,即为最终结果。
代码实现如下:
class Solution {public: int longestValidParentheses(string s) { if (s.empty()||s.size()==1)return 0; vector<int> res; for (int i = 0; i < s.size(); i++) { if (s[i] == '('){ res.push_back(i); cout << res.back() << endl; } else { if (res.empty()) { res.push_back(i); } else{ if (s[res.back()] == '(') { res.pop_back(); } else { res.push_back(i); } } } } if (res.empty())return s.size(); int result=res[0]; for (int i = 1; i < res.size(); i++) { //计算每两个索引值之间的间隔 int temp = res[i] - res[i - 1]-1; //返回最大的值 if (temp>result)result = temp; } //计算最后一个索引值与字符串结尾的间隔 int temp = s.size() -1- res.back(); if (temp>result&&temp != 1)result = temp; return result; }};
阅读全文
0 0
- LeetCode(32)Longest Valid Parentheses
- [Leetcode] #32 Longest Valid Parentheses
- [Leetcode] 32 - Longest Valid Parentheses
- LeetCode 32 Longest Valid Parentheses
- Leetcode 32 Longest Valid Parentheses
- leetcode 32 -- Longest Valid Parentheses
- LeetCode---(32)Longest Valid Parentheses
- leetcode 32 : Longest Valid Parentheses
- leetcode 32: Longest Valid Parentheses
- [leetcode 32]Longest Valid Parentheses
- LeetCode-32 Longest Valid Parentheses
- Leetcode #32 Longest Valid Parentheses
- Leetcode#32||Longest Valid Parentheses
- leetcode-32 Longest Valid Parentheses
- leetcode 32:Longest Valid Parentheses
- LeetCode 32: Longest Valid Parentheses
- Leetcode 32 - Longest Valid Parentheses
- LeetCode(32)-Longest Valid Parentheses
- java研发网页数据采集
- CSU-ACM2017暑期训练5-三分 D
- eclipse 优化 经常未响应解决办法
- linux deepin解决freemind中文乱码和crossover的netframwork的问题 xmind
- 9、提取不重复的整数
- LeetCode(32)--Longest Valid Parentheses
- 嵌入式每日学习心得2017.08.01
- HTTP请求报文和HTTP响应报文
- Android开发艺术探索(Activity)
- Lake Counting (DFS )
- 八大排序算法C实现
- 【KMP】POJ3461 Oulipo
- typescript
- 对反射(reflect)的理解