算法练习(12):Longest Valid Parentheses
来源:互联网 发布:变身之网络妖星系统 编辑:程序博客网 时间:2024/06/06 00:23
题意:题目是要我们找出连续有效括号的最大长度。
分析与思路:括号匹配问题一般都会想到用栈来解决,我的方法就是用栈来做的。问题是找出字符串里面最长的一段的长度,也就是说可能有很多个有效段。我一开始想过用累加的方法,对于某个段,没匹配一个成功就长度加2,但是发现问题没有这么简单,这样子做会难以区分段的结束。后来我改用了字符对应的下标来计算长度,那么这样子的话就要在每一个字符的入栈出栈中伴随着对应的下标的入栈出栈。判断思路都在代码解释中了。
代码:
class Solution {public:int longestValidParentheses(string s) {int maxlength = 0, nowlength = 0;stack<char> st;//符号栈stack<int> subscript;//符号对应下标for (int i = 0; i < s.length(); i++) {if (s[i] == '(') {//左括号入栈subscript.push(i);st.push(s[i]);}else {//右括号if (!st.empty() && st.top() == '(') {st.pop();subscript.pop();if (st.empty()) nowlength = i + 1;else nowlength = i - subscript.top();if (nowlength > maxlength) maxlength = nowlength;}else {//无法匹配的右括号,会作为新的段的起点st.push(s[i]);subscript.push(i);}}}return maxlength;}};
阅读全文
0 0
- 算法练习(12):Longest Valid Parentheses
- 【LeetCode算法练习(C++)】Longest Valid Parentheses
- 【LeetCode算法练习(C++)】Valid Parentheses
- LeetCode OJ算法题(三十一):Longest Valid Parentheses
- LeetCode算法题目:Longest Valid Parentheses
- 【算法】【Dynamic Programming】Longest Valid Parentheses
- LeetCode 题解(111): Longest Valid Parentheses
- LeetCode 之 Longest Valid Parentheses(栈)
- LeetCode (32) Longest Valid Parentheses
- leetcode系列(48)Longest Valid Parentheses
- leetcode_c++:Longest Valid Parentheses(032)
- (重点)[LeetCode]Longest Valid Parentheses
- LeetCode: Longest Valid Parentheses
- LeetCode Longest Valid Parentheses
- LeetCode: Longest Valid Parentheses
- [Leetcode] Longest Valid Parentheses
- [leetcode]longest Valid Parentheses(!!)
- Longest Valid Parentheses
- matlab程序控制结构
- ssm
- 关于Statement
- 安装freeradius的GUI管理程序dialup_admin
- MkDocs 快速入门
- 算法练习(12):Longest Valid Parentheses
- Antenna Placement POJ
- Git常用命令大全
- hdu1298(字典树+dfs)
- 神经网络基础知识
- How to get root access for other users with the visudo
- HDU 5125 Magic Balls DP(LIS变形)
- HDU2665 主席树原理解决静态区间第K大值问题总结 有详细图解和代码解释
- Android自定义View的实现方式(三种)