Valid Parentheses有效括号匹配。利用栈。
2016-05-30 15:56
363 查看
问题描述:给定一个字符串,其中只包含字符‘{’, '}', '[', ']', '(', ')'确定如果输入字符串是有效的。
括号必须以正确的顺序排列,“()”和“()[]{ }”都是有效的, "{", " {]"等都是无效的。
解题思路:利用栈,如果不是右括号就压入栈中,如果是右括号,就看前一个字符是不是匹配的左括号,如果匹配出栈,接着看后面字符,不匹配则返回false。
括号必须以正确的顺序排列,“()”和“()[]{ }”都是有效的, "{", " {]"等都是无效的。
解题思路:利用栈,如果不是右括号就压入栈中,如果是右括号,就看前一个字符是不是匹配的左括号,如果匹配出栈,接着看后面字符,不匹配则返回false。
public boolean isValid(String s) { Map<Character,Character> map = new HashMap<>(); map.put('(',')'); map.put('[',']'); map.put('{','}'); Stack<Character> stack = new Stack<>(); for(int i = 0; i < s.length(); i ++) { char curr = s.charAt(i); if(map.keySet().contains(curr)) { stack.push(curr); } //注意判断空的情况 else if(!stack.empty() && map.values().contains(curr)) { char pre = stack.peek(); if(map.get(pre)==curr) { stack.pop(); } else { return false; } } else { return false; } } return stack.empty(); }
相关文章推荐
- 彻底解决“从客户端中检测到有潜在危险的Request.Form值”
- UIView+LHQExtension(分类)
- HttpClient请求
- Spring Boot——2分钟构建spring web mvc REST风格HelloWorld
- HTML5拖拽的简单实例
- CMake入门
- foj Problem 2232 炉石传说 福州大学第十三届程序设计竞赛_重现 二分图
- Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法
- java的"值传递"和"引用传递"的问题
- Android--webview 漏洞 解析
- 基于soot的过程内数据流分析
- 原来链接这么建设,才能拥有好排名!
- <<Effective C++>>读书笔记3: 资源管理
- xListView
- CMake test目录和项目同名错误
- 插入排序
- tq2440 adc 驱动
- telerik学习总结
- BootStrap中Tab页签切换实例代码
- Nsdate的格式转换(NSDateFormatter)