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
原创粉丝点击