【每日刷题】最长有效括号
时间:2019-01-18
本文章向大家介绍【每日刷题】最长有效括号,主要包括【每日刷题】最长有效括号使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
day22, 最长有效括号
题目来源:leetcode
给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。
示例 1:
输入: “(()”
输出: 2
解释: 最长有效括号子串为 “()”
示例 2:
输入: “)()())”
输出: 4
解释: 最长有效括号子串为 “()()”
解答:该题目最主要的问题是如何保存最长的有效括号长度。
加入辅助数组,左括号直接进栈,右括号主要看栈中数符。
int longestValidParentheses(string s) {
stack<char> record;
vector<int> result;
for( int i = 0; i < s.size(); i++){
if( record.empty() && s[i] == ')'){
record.push(')');
continue;
}
if( s[i] == '('){
for( int j = 0; j < result.size(); j++)
record.push('2');
result.clear();
record.push( s[i]);
continue;
}
if( !record.empty() && s[i] == ')'){
if( record.top() == '('){
record.pop();
record.push('2');
}
else if( record.top() == '2'){
while( !record.empty() && record.top() == '2'){
record.pop();
result.push_back(2);
}
if( !record.empty() && record.top() == '('){
record.pop();
result.push_back(2);
for( int j = 0; j < result.size(); j++)
record.push('2');
result.clear();
}
else if( (!record.empty() && record.top() == ')') || record.empty()){
for( int j = 0; j < result.size(); j++)
record.push('2');
result.clear();
record.push(')');
}
}
else
record.push( s[i]);
}
}
int maxDis = 0, dis = 0;
while( !record.empty()){
if( record.top() == '2'){
dis+=2;
record.pop();
if( dis > maxDis)
maxDis = dis;
}
else
dis = 0, record.pop();
}
return maxDis;
}
运行结果:
我的微信公众号
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- mongodb和php的用法详解
- php多进程模拟并发事务产生的问题小结
- PHP中命名空间的使用例子
- 基于Python 的语音重采样函数解析
- TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
- Keras模型转成tensorflow的.pb操作
- php使用array_chunk函数将一个数组分割成多个数组
- keras读取训练好的模型参数并把参数赋值给其它模型详解
- python 删除excel表格重复行,数据预处理操作
- 终于搞懂了Keras中multiloss的对应关系介绍
- python else语句在循环中的运用详解
- python文件编写好后如何实践
- keras 指定程序在某块卡上训练实例
- Python3 requests模块如何模仿浏览器及代理
- PHP中的empty、isset、isnull的区别与使用实例