有效的括号序列
题目
给定一个字符串所表示的括号序列,包含以下字符: ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’, 判定是否是有效的括号序列。
样例
括号必须依照 “()” 顺序表示, “()[]{}” 是有效的括号,但 “([)]”则是无效的括号。
挑战
O(n)的时间,n为括号的个数
题解
左括号入栈,右括号弹栈(栈不空且与栈顶括号匹配)。 下面代码是判断括号是否匹配的,大家看下ASCII码表就明白了。
Math.abs(stack.peek() - c) <= 2
public class Solution {
/**
* @param s A string
* @return whether the string is a valid parentheses
*/
public boolean isValidParentheses(String s) {
Stack<Character> stack = new Stack<Character>();
for (Character c : s.toCharArray())
{
if ("{[(".contains(String.valueOf(c)))
{
stack.push(c);
}
else if (!stack.isEmpty() && Math.abs(stack.peek() - c) <= 2)
{
stack.pop();
}
else
{
return false;
}
}
return stack.isEmpty();
}
}
Last Update 2016.9.16