博客
关于我
Leetcode20. 有效的括号 辅助栈
阅读量:527 次
发布时间:2019-03-07

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

解题思路

我们可以用栈来解决这题,因为栈是先进后出,和这题的要求刚好一致,如果遇到左括号就直接入栈,遇到右括号,就判断栈顶的括号是否为该右括号相对应的左括号,如果不匹配就返回false,匹配就把栈顶元素弹出,然后开始下一个元素的判断;

这里有个小技巧,如何快速匹配左右括号?在java中能用HashMap,用key保存左括号,value保存右括号。

代码

class Solution {       Map
map = new HashMap<>() { //保存要匹配的左右括号,可以快速匹配 { put('(',')'); put('{','}'); put('[',']'); } }; public boolean isValid(String s) { Deque
stack = new LinkedList<>(); //用双端队列模拟战 for(char i : s.toCharArray()) { //把s转为char数组,然后遍历 if(map.containsKey(i)) //判断是不是左括号,是左括号就入栈 stack.push(i); //判断右括号是否和栈顶为匹配的左括号,匹配就直接弹出栈顶的左括号; //不匹配就直接返回false; 因为要弹出栈顶所以先要判断栈是否为空 else if(stack.isEmpty() || i != map.get(stack.pop())) return false; } return stack.isEmpty(); //栈空就代表完全匹配成功,返回true; //不为空就返回false,代表栈还有左括号; }}

复杂度分析

  • 时间复杂度 :O(N)
  • 空间复杂度 :O(N)

转载地址:http://yaynz.baihongyu.com/

你可能感兴趣的文章
vue中各模块加载和渲染的过程
查看>>
Nginx从入门到精通
查看>>
Nginx从入门到精通(全)
查看>>
Nginx从安装到高可用,一篇搞定!
查看>>
Nginx代理websocket配置(解决websocket异常断开连接tcp连接不断问题)
查看>>
Nginx代理初探
查看>>
nginx代理地图服务--离线部署地图服务(地图数据篇.4)
查看>>
Nginx代理外网映射
查看>>
Nginx代理模式下 log-format 获取客户端真实IP
查看>>
Nginx代理解决跨域问题(导致图片只能预览不能下载)
查看>>
Nginx代理访问提示ERR_CONTENT_LENGTH_MISMATCH
查看>>
Nginx代理配置详解
查看>>
Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
查看>>
Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
查看>>
nginx优化日志拒绝特定404请求写入
查看>>
Nginx优化解析
查看>>
Nginx使用proxy_cache指令设置反向代理缓存静态资源
查看>>
Nginx做反向代理时访问端口被自动去除
查看>>
Nginx入门教程-简介、安装、反向代理、负载均衡、动静分离使用实例
查看>>
Nginx入门简介和反向代理、负载均衡、动静分离理解
查看>>