DAY 49 leetcode 20--栈和队列.有效的括号
题号20
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
由于栈结构的特殊性,非常适合做对称匹配类的题目。
class Solution {public boolean isValid(String s) {Deque <Character> stack=new LinkedList <>();for(int i=0;i<s.length();i++){if(s.charAt(i)=='(')stack.push(')');//加入对应的括号else if(s.charAt(i)=='{')stack.push('}');else if(s.charAt(i)=='[')stack.push(']');else if(!stack.isEmpty()&&s.charAt(i)==stack.peek())stack.pop();elsereturn false;}return stack.isEmpty();}}
思路:先检测左括号,然后逐一将左括号对应的右括号入栈,这样的好处是判断左右括号是否匹配时,只需判断两括号是否相等就行了(因为都是右括号),若相等则pop()