LeetCode 20 -- Valid Parentheses
2015-07-29 17:04
501 查看
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.
主要思想还是盏。
The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.
主要思想还是盏。
public static boolean isValid(String s) { HashMap<Character, Character> map = new HashMap<Character, Character>(); map.put('(', ')'); map.put('[', ']'); map.put('{', '}'); Stack<Character> stack = new Stack<Character>(); for (int i = 0; i < s.length(); i++) { char curr = s.charAt(i); if (map.keySet().contains(curr)) { stack.push(curr); } else if (map.values().contains(curr)) { if (!stack.empty() && map.get(stack.peek()) == curr) { stack.pop(); } else { return false; } } } return stack.empty(); }
public class S20 { public static void main(String[] args) { } // 用stack来检查 public boolean isValid(String s) { Stack<Character> stack = new Stack<Character>(); for(int i=0; i<s.length(); i++){ char c = s.charAt(i); // 如果遇到前括号就压入栈 if(c=='(' || c=='[' || c=='{'){ stack.push(c); }else if(c==')' || c==']' || c=='}'){ // 遇到后括号就出栈 if(stack.size() == 0){ // 说明后括号太多了 return false; } char cpop = stack.pop(); if(cpop=='(' && c==')'){ continue; }else if(cpop=='[' && c==']'){ continue; }else if(cpop=='{' && c=='}'){ continue; } return false; } } return stack.size()==0; } }
相关文章推荐
- sql server2008中左连接,右连接,等值连接的区别
- Android指针管理:RefBase,SP,WP
- 线段树(区间合并) POJ 3667 Hotel
- uva 10976 Fractions Again(简单枚举)
- 比较全面的 C++ 操作符重载 (operator)
- HDOJ 2120 Ice_cream's world I(并查集)
- 小希的迷宫
- 40 - 找出数组中只出现一次的数字
- [Leetcode]Number of 1 Bits
- poj 1127 线段相交的判定
- HDU 5321 Beautiful Set 美丽集合
- 【POJ2923】【Relocation】
- 根据文字算出文字所占区域大小
- 【IDE-Visual Studio】引用ms32.lib 编译时发现链接错误
- 【SQL语句】 - Ctrl+3 查询表属性的存储过程 [sp_select_talberowName]
- Rails 应用使用 Capistrano2 部署流程
- continue和break的使用注意
- php实现在多维数组中查找特定value的方法
- js数组元素删除操作
- Netty中对象序列化传输机制研究分析