32. Longest Valid Parentheses
来源:互联网 发布:关于茶的软件 编辑:程序博客网 时间:2024/06/16 13:23
栈的典型应用。能想到栈,但是能想到Push字符索引,真的不是很容易(这道题一般的想法是存储‘(’ ‘)’这些符号)。
原题
Given 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.
代码实现
//栈的典型应用 //能想到栈,但是能想到Push字符索引,真的不是很容易(这道题一般的想法是存储‘(’ ‘)’这些符号) public int LongestValidParentheses(string s) { int n = s.Length, longest = 0; Stack<int> st = new Stack<int>(); //第一部分:首先抵消掉所有的合法的括号对 //留下来的都是一些卡槽(这些卡槽正是分隔区间) for (int i = 0; i < n; i++) { if (s[i] == '(') st.Push(i); else { if (st.Count > 0) { if (s[st.Peek()] == '(') st.Pop(); else st.Push(i); } else st.Push(i); } } //第二部分:分析这些卡槽,求出最大卡槽长度 //最大卡槽便是s的最大字符数 if (st.Count == 0) return n; //至少有卡槽,求出最大长度 int slot = n; while (st.Count > 0) { int tmpslot = st.Pop(); longest = Math.Max(longest, slot - tmpslot-1); slot = tmpslot; } longest = Math.Max(longest, slot-0); return longest; }
阅读全文
2 1
- 32.Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- app与后台的token、sessionId、RSA加密登录认证与安全解决方案
- 各个浏览器都是什么内核整理
- HADOOP集群搭建
- C++ SDL学习之路 1st —— 配置一下SDL
- Android7.0中文文档(API)-- Scroller
- 32. Longest Valid Parentheses
- 通过formdata ajax上传图片 以及后台接收formdata数据 mvc
- Android CPU架构解析
- 移动端UI尺寸
- Android进阶之路
- java nio教程(转)
- Mysql 水平拆分和垂直拆分
- 神经网络之激活函数
- 手机端css中input的高度兼容问题