Valid Parentheses
来源:互联网 发布:艾弗森对乔丹比赛数据 编辑:程序博客网 时间:2024/05/18 03:49
Problem: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.
最简单的解法是使用栈,'('入栈,')'时'('出栈,需要处理三种情况,存在很大的代码重复。
public static boolean isValid(String s) {Stack<Character> sk=new Stack<Character>();for(int i=0;i<s.length();i++){if(s.charAt(i)=='(')sk.push('(');if(s.charAt(i)==')'){if(!sk.empty()&&sk.peek()=='(')sk.pop();elsereturn false;}if(s.charAt(i)=='[')sk.push('[');if(s.charAt(i)==']'){if(!sk.empty()&&sk.peek()=='[')sk.pop();elsereturn false;}if(s.charAt(i)=='{')sk.push('{');if(s.charAt(i)=='}'){if(!sk.empty()&&sk.peek()=='{')sk.pop();elsereturn false;}}if(sk.empty())return true;elsereturn false;}
更简单的方法是使用HashMap存在'('') ''['']' '{''}',再判断入栈出栈操作。
public static boolean isValid(String s) {Stack<Character> sk=new Stack<Character>();HashMap<Character,Character> hp=new HashMap<Character, Character>();hp.put('(', ')');hp.put('[', ']');hp.put('{', '}');for(int i=0;i<s.length();i++){char cur=s.charAt(i);if(hp.containsKey(cur))sk.push(cur);else if(hp.containsValue(cur)){if(!sk.empty()&&hp.get(sk.peek())==cur)sk.pop();elsereturn false;}}return sk.empty();}
0 0
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- HDU 1053 Entropy
- Swift语言介绍
- 1284 2 3 5 7的倍数
- linux下printf中"\n"刷新缓冲区的疑问(待解决--评论中的问题)
- Spring-01-HelloWorld
- Valid Parentheses
- Lowest Common Ancestor of a Binary Tree
- 自动化的学习过程
- 二维线段树 poj2155 Matrix
- HDU 4512 吉哥系列故事——完美队形I
- 应用程序生命周期
- Java线程池使用说明
- sizeof
- eclipse设置自动注释的@author的值 ${user}变量