描述
给出一个仅包含字符’(‘,’)‘,’{‘,’}‘,’[‘和’]',的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。
数据范围:字符串长度 0≤n≤100000≤n≤10000
要求:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)
示例1
输入:
“[”
返回值:
false
示例2
输入:
“[]”
返回值:
true
分析:
根据栈的特性,压入与开括号相对应的闭括号
然后比较输入的闭括号与栈顶的闭括号是否相等,若相等则弹出栈。
public boolean isValid (String s) {
// write code here
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c=='(')
stack.push(')');
else if (c=='[')
stack.push(']');
else if (c=='{')
stack.push('}');
else if ( stack.isEmpty() || stack.pop()!=c){
return false;
}
}
return true;
}