提示
LintCode中的相关算法题实现代码,可以在我的GitHub中下载。
题目需求
给定一个字符串所表示的括号序列,包含以下字符: '(', ')'
, '{'
, '}'
, '['
and ']'
, 判定是否是有效的括号序列。
样例
括号必须依照 "()"
顺序表示, "()[]{}"
是有效的括号,但 "([)]"
则是无效的括号。
解题思路
使用栈,如果匹配就出栈,看最后栈中是否有剩余元素,如果有,无效括号。
实现代码
public class Solution { /** * @param s: A string * @return: whether the string is a valid parentheses */ public boolean isValidParentheses(String s) { // write your code here if(s==null||s.length()==0) return true; Stack<String> stack=new Stack(); stack.push(s.charAt(0)+""); for(int i=1;i<s.length();i++) { if(stack.size()==0) { stack.push(s.charAt(i)+""); continue; } if((stack.peek()+s.charAt(i)+"").equals("()")||(stack.peek()+s.charAt(i)+"").equals("[]")||(stack.peek()+s.charAt(i)+"").equals("{}")) { stack.pop(); } else{ stack.push(s.charAt(i)+""); } } if(stack.size()==0) return true; return false; } }