20. 有效的括号(Java)
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
思路:栈的应用
使用栈时一定要考虑栈空的情况,防止溢出
左括号入栈,右括号判断栈顶是否为能与之匹配的左括号,若能则栈顶元素出栈,若不能或当前栈为空,则为不符合的序列。遍历完所有字符后若栈空,则字符串有效,否则无效
class Solution {
public boolean isValid(String s) {
//左括号入栈,出现一个能与其匹配的右括号就出栈,若栈空,字符串有效,否则无效
Stack<Character> stack=new Stack<>();
for(int i=0;i<s.length();i++) {
switch(s.charAt(i)) {
case '(':
case '{':
case '[':
stack.push(s.charAt(i));
break;
case ')':
if(stack.isEmpty()||stack.peek()!='(')
return false;
else
stack.pop();
break;
case ']':
if(stack.isEmpty()||stack.peek()!='['){
return false;}
else
stack.pop();
break;
case '}':
if(stack.isEmpty()||stack.peek()!='{')
return false;
else
stack.pop();
break;
}
//System.out.println(stack);
}
//System.out.println(stack);
if(stack.isEmpty())
return true;
else
return false;
}
}