博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode32. Longest Valid Parentheses
阅读量:4608 次
发布时间:2019-06-09

本文共 1281 字,大约阅读时间需要 4 分钟。

本来以为没必要用栈,代码如下:

class Solution {public:    int longestValidParentheses(string s) {        int stack = 0;        int length=0,max=0;        for(int i=0;i
0) { stack--; length+=2; if(length>max) max=length; } else length=0; } } return max; }};

 之前的思路是遇到左括号就标志变量+1,遇到右括号就-1,如果遇到右括号而且标志变量为0就说明出现了不匹配的情况。但是这样没有记住之前的信息,遇到左括号无法匹配的情况就没辙了,比如"()(()"

用栈把左括号的位置都记录下来,用变量记录不匹配的位置,初始化为-1并入栈,因此遇到右括号时,如果栈的大小=1就说明出现不匹配的情况,将新的不匹配位置入栈。这种办法比起刚开始的想法的好处是可以 记录左括号的位置,就不会出现之前的错误了。

class Solution {public:    int longestValidParentheses(string s) {        stack
pstack; pstack.push(-1); int length=0,max=0; for(int i=0;i
1) { pstack.pop(); length = i - (int)pstack.top(); if(length>max) max=length; } else { pstack.pop(); pstack.push(i); } } } return max; }};

 

转载于:https://www.cnblogs.com/tonychen-tobeTopCoder/p/5178318.html

你可能感兴趣的文章
发布mvc遇到的HTTP错误 403.14-Forbidden解决办法
查看>>
记录一些好用的工具
查看>>
超链接样式设置(去下划线)(转)
查看>>
2016012003+陈琦+散列函数的应用及其安全性
查看>>
Android 状态栏通知Notification、NotificationManager详解
查看>>
UIApplicationDelegate协议
查看>>
Jmeter测试dubbo接口填坑
查看>>
[zz]GDB调试精粹及使用实例
查看>>
数据库的创建和删除
查看>>
最简单的三层实例【插入据
查看>>
设计模式学习笔记——Prototype原型模式
查看>>
pom.xml里有红叉报错的解决办法
查看>>
Perl last和next的用法区别
查看>>
Selenium 管理 Cookies
查看>>
exceptionfunction[LeetCode]Permutations
查看>>
Linux(2)_常用命令2
查看>>
自定义分页
查看>>
[转]DELPHI——调试(1)
查看>>
JS秒数转成分秒时间格式
查看>>
xp_cmdshell 命令的开启与关闭,和状态查询
查看>>