括号序列
题目描述
给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。牛客网:NC52括号序列
#示例1
输入
"["
输出
false
示例2
输入
"[]"
输出
true
想法
本题我们可以使用栈来实现,括号的出现形式是成对嵌套形式的。遍历输入的字符串,如果遇到左括号,将对应的右括号直接入栈。遇到右括号时,就判断栈是否为空且出栈元素是否相同,如不符合要求,判断为false。完成遍历后,如果栈为空,判断为true,相反为false。
Java 栈的使用方法 https://www.imooc.com/article/17679
代码实现方法
public boolean isValid (String s) {
if (s == null) return false;
Stack<Character> characters = new Stack<Character>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
switch (c){
case '(':
characters.push(')');
break;
case '[':
characters.push(']');
break;
case '{':
characters.push('}');
break;
default:
if (characters.empty()||characters.pop()!=c){
return false;
}
}
}
return characters.empty();
}