给定一个字符串所表示的括号序列,包含以下字符: '(', ')'
, '{'
, '}'
, '['
and ']'
, 判定是否是有效的括号序列。
括号必须依照 "()"
顺序表示, "()[]{}"
是有效的括号,但 "([)]"
则是无效的括号。
O(n)的时间,n为括号的个数
相关题目 Expand
利用栈的特点。
/**
* @param s A string
* @return whether the string is a valid parentheses
*/
public boolean isValidParentheses(String s) {
// Write your code here
Stack<Character> stack = new Stack<>();
if (0 == s.length() || null == s)
return true;
if (1 == s.length())
return false;
boolean flag = true;
for (int i = 0; i < s.length(); i++) {
if (stack.isEmpty()) {
stack.push(s.charAt(i));
} else if (stack.peek() == '(' && s.charAt(i) == ')') {
stack.pop();
} else if (stack.peek() == '[' && s.charAt(i) == ']') {
stack.pop();
} else if (stack.peek() == '{' && s.charAt(i) == '}') {
stack.pop();
} else {
stack.push(s.charAt(i));
}
}
if (stack.isEmpty()) {
flag = true;
} else {
flag = false;
}
return flag;
}
}