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.
解法:
采用栈方法,遍历字符串,对于每个字符:
遍历结束后,如果栈为空,返回true;否则返回false。
public class Solution { public boolean isValid(String s) { Stack<Character> stack = new Stack<>(); for (int i = 0; i < s.length(); i++) { if ("{[(".contains(s.substring(i, i + 1))) { stack.push(s.charAt(i)); } else if (")]}".contains(s.substring(i, i + 1))) { if (stack.empty() || !match(stack.pop(), s.charAt(i))) { return false; } } else { return false; } } return stack.empty(); } public boolean match(char c1, char c2) { return (c1 == ‘(‘ && c2 == ‘)‘) || (c1 == ‘[‘ && c2 == ‘]‘) || (c1 == ‘{‘ && c2 == ‘}‘); } }
[LeetCode] 20. Valid Parentheses ☆
原文:http://www.cnblogs.com/strugglion/p/6413678.html