最长有效括号长度(from pongo)
来源:互联网 发布:编程赚钱的网站 编辑:程序博客网 时间:2024/05/16 14:04
问题:
给定只包含括号字符'('和 ')''的字符串,请找出最长的有效括号内子括号的长度。举几个例子如下:例如对于"( ()",最长的有效的括号中的子字符串是"()" ,有效双括号数1个,故它的长度为 2。 再比如对于字符串") () () )",其中最长的有效的括号中的子字符串是"() ()",有效双括号数2个,故它的长度为4。 再比如对于"( () () )",它的长度为6。 换言之,便是有效双括号"()"数的两倍。给定函数原型int longestValidParentheses(string s),请完成此函数,实现上述功能。
做法:
利用栈来找到不能和其他半括号配对构成连续有效括号的半括号,把它们作为串的分界,最后遍历各个分界,相邻分界的序号差反映了之间的有效括号个数。复杂度为O(n)。
代码如下:
#include <iostream>#include <string>#include <stack>using namespace std;struct node{int order;int type;};class Solution{public: int longestValidParentheses(string s) { int max=0, i, length=s.length(), top_order;stack<node> Q;struct node tmp;for(i=0;i<length;i++){if(s[i]=='('){tmp.order = i+1;tmp.type = 0;Q.push(tmp);}else{if(!Q.empty() && Q.top().type==0)Q.pop();else{tmp.order = i+1;tmp.type = 1;Q.push(tmp);}}}tmp.order = length+1;tmp.type = 0;Q.push(tmp);while(Q.size()>0){top_order = Q.top().order;Q.pop();if(!Q.empty())max = (max>(top_order-Q.top().order-1))? max:(top_order-Q.top().order-1);elsemax = (max>(top_order-1))? max:(top_order-1);}return max; }};
0 0
- 最长有效括号长度(from pongo)
- 【pongo】【最长有效括号】【代码求改】
- 最长有效括号长度
- 最长有效括号的长度
- 最长有效括号的长度
- ”最长有效括号的长度“
- 最长有效括号的长度
- 最长有效括号的长度
- 在线编程:最长有效括号的长度
- 算法分析: 最长有效括号的长度
- 挑战编程: 最长有效括号的长度
- 最长有效括号的长度问题
- 最长有效括号的长度--英雄会
- 最长有效括号的长度(来自 庞果)
- 求最长有效括号长度 java
- 最长的有效括号序列长度
- 庞果网:最长有效括号的长度(挑战失败,代码如下,求指教)
- 求最长有效匹配括号子串的长度(Longest Valid Parentheses)
- 转载的长文—图像处理与计算机视觉:基础,经典以及最近发展
- 学习笔记-轻量级Java EE:Servlet之Filter
- backbone实用,让backbone更合后端开发人员的心意
- js页面之间传参方式集合
- oracle 创建,删除存储过程,参数传递,创建,删除存储函数,存储过程和函数的查看,包,系统包
- 最长有效括号长度(from pongo)
- android NDK配置
- CF 209 Div2 (C) 快速幂 取分子最小的公约数
- Java笔记
- 关于error:Cannot assign to 'self' outside of a method in the init family
- Core Java 基础篇1
- struts2+jquery+json 实现ajax请求,对象传值
- 测试 java Map 所有遍历方法的效率
- LeetCode (T)