【leetcode】Longest Valid Parentheses
来源:互联网 发布:中国农产品进出口数据 编辑:程序博客网 时间:2024/06/07 12:09
#include<iostream>#include<stack>#include<vector>#include<string>#include<algorithm>using namespace std;struct Node{ int key; char c; Node(int key,char c):key(key),c(c){};};class Solution1{public: int fun(string s) { stack<Node*>result; int i=0; vector<int>arr; while(i<s.size()) { Node *node=new Node(i,s[i]); if(!result.empty()) { char temp=result.top()->c; if(juge(temp,s[i])) { arr.push_back(result.top()->key); arr.push_back(i); result.pop(); } else result.push(node); } else result.push(node); i++; } /*while(!result.empty()) { cout<<result.top()->key<<' '<<result.top()->c<<endl; result.pop(); }*/ sort(arr.begin(),arr.end()); for(auto it=arr.begin();it!=arr.end();it++) cout<<*it<<endl; cout<<"*****"<<endl; int max=1; int max_id=0; for(vector<int>::iterator i=arr.begin();i!=arr.end();i++) { auto j=i+1; auto t=i; int count=1; for(;j!=arr.end();j++) { cout<<*j<<endl; cout<<*t<<endl; if(1!=((*j)-(*t))) break; else { count++; } t=j; }cout<<"HHH"<<endl; if(max<count) { max=count; max_id=*(j-1)-max+1; } if(j==arr.end()) break; i=j-1; } return max; } bool juge(char a,char b) { if(a=='('&&b==')'||a=='['&&b==']'||a=='{'&&b=='}') return true; else return false; }};class Solution2{public: int fun(string s) { stack<int>result; for(int i=0;i<s.size();i++) { if(s[i]=='(') result.push(i); else if(!result.empty()) { s[result.top()]='$'; s[i]='$'; result.pop(); } } int length=0; int max=0; for(int i=0;i<s.size();i++) { if(s[i]=='$') { length++; if(max<length) max=length; } else length=0; } return max; }};class Solution3{public: int fun(string a) { stack<Node>result; int max_id=0; Node node=Node(-1,')'); result.push(node); for(int i=0;i<a.size();i++) { Node node=Node(i,a[i]); if(a[i]=='(') result.push(node); else { if(result.top().c=='(') { result.pop(); /*if(max<i-result.top().key) max=i-result.top().key;*/ max_id=max(max_id,i-result.top().key); } else result.push(node); } } return max_id; }};class Solution4 {public: int fun(string s) { int answer = 0, depth = 0, start = -1; for (int i = 0; i < s.size(); ++i) { if (s[i] == '(') { ++depth; } else { --depth; if (depth < 0) { start = i; depth = 0; } else if (depth == 0) { answer = max(answer, i - start); } } } cout<<"answer"<<answer<<endl; depth = 0; start = s.size(); for (int i = s.size() - 1; i >= 0; --i) { if (s[i] == ')') { ++depth; } else { --depth; if (depth < 0) { start = i; depth = 0; } else if (depth == 0) { answer = max(answer, start - i); } } } cout<<"answer"<<answer<<endl; return answer; }};void main(){ Solution1 solution; string a("((()()"); cout<<"max="<<solution.fun(a);}
0 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
- SQOOP连接SQLServer2005错误
- C++基础---基本编程语句
- neutron security group
- 如何用C语言封装 C++的类,在 C里面使用
- POJ 2562 Primary Arithmetic(高精度)
- 【leetcode】Longest Valid Parentheses
- java 抽象类和接口的区别
- C语言文件的输入输出_学生的信息
- 数列第k大
- 黑马程序员——Java 多线程
- MotionEvent事件传递个人总结
- ORA-01113,ORA-01110的简单解决
- java数值交换的技巧
- 文件2