LeetCode OJ 20 Valid Parentheses
题目描述:
Given a string containing just thecharacters '(', ')', '{', '}', '[' and ']', determine if the input string isvalid.
The brackets must close in the correctorder, "()" and "()[]{}" are all valid but "(]"and "([)]" are not.
题目理解:
给定一个带有'(', ')', '{', '}', '[' ']'的字符串,判断这些括号是否合法
题目分析:
括号是配对的,且是右括号匹配最近出现的左括号,先进后出模式,容易想到用栈来实现
我的解答:
public static boolean isValid(String s) { Stack<Character> stack = new Stack<Character>(); for (char c : s.toCharArray()) { if (c == '(') stack.push('('); else if (c == '{') stack.push('{'); else if (c == '[') stack.push('['); else if (c == ')') { if (stack.isEmpty() || stack.pop() != '(') return false; } else if (c == '}') { if (stack.isEmpty() || stack.pop() != '{') return false; } else if (c == ']') { if (stack.isEmpty() || stack.pop() != '[') return false; } } if (stack.isEmpty()) return true; else return false; }
更简洁的解答:
public boolean isValid(String s) { Stack<Character> stack = new Stack<Character>(); for (char c : s.toCharArray()) { if (c == '(') stack.push(')'); else if (c == '{') stack.push('}'); else if (c == '[') stack.push(']'); else if (stack.isEmpty() || stack.pop() != c) return false; } return stack.isEmpty(); }