有效的括号
此博客链接:https://www.cnblogs.com/ping2yingshi/p/12616154.html
有效的括号(45min)
题目链接:https://leetcode-cn.com/problems/valid-parentheses/
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: "()"
输出: true
示例 2:
输入: "()[]{}"
输出: true
示例 3:
输入: "(]"
输出: false
示例 4:
输入: "([)]"
输出: false
示例 5:
输入: "{[]}"
输出: true
题解:
方法:栈的运用。
思路:遇到左括号入栈,遇到右括号把栈顶元素和右括号匹配,如果括号匹配则继续匹配下一个括号,不匹配则返回false。
注意:栈不为空时也是返回false,这说明栈中还有未完成匹配的左括号。
代码如下:
class Solution { public boolean isValid(String s) { int len=s.length(); Stack<Character> stack=new Stack<>(); for(int i=0;i<len;i++) {//满足条件入栈 if(s.charAt(i)=='('||s.charAt(i)=='{'||s.charAt(i)=='[') stack.push(s.charAt(i)); else//不满足条件时,判断当前括号和栈顶元素是否匹配,这里有三种情况 { if(stack.isEmpty())//先判断栈是否为空 return false; if(s.charAt(i)==')'&&stack.peek()=='(') stack.pop(); else if( s.charAt(i)==']'&&stack.peek()=='[') stack.pop(); else if( s.charAt(i)=='}'&&stack.peek()=='{') stack.pop(); else return false; } } return stack.isEmpty(); } }
出来混总是要还的