题解 | #有效括号序列#
有效括号序列
https://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2
import java.util.*; public class Solution { /** * * @param s string字符串 * @return bool布尔型 */ public boolean isValid (String s) { // write code here // 括号是否合法,直接想到了用栈来处理 Stack<Character> stack = new Stack<>(); for(int i = 0;i<s.length();i++){ char ch = s.charAt(i); if(ch =='(' || ch =='[' || ch =='{'){ stack.push(ch); }else{ if(stack.isEmpty()){ // 开始出现的是右括号 return false; } char left = stack.pop(); if(findLeft(ch) != left){ return false; } } } if(!stack.isEmpty()){ // 左括号比右括号多 return false; } return true; } public char findLeft(char ch){ if(ch ==')'){ return '('; } if(ch =='}'){ return '{'; } if(ch ==']'){ return '['; } return ' '; } }
思路,括号匹配想到用Stack
只让左括号进栈,遇到右括号,弹出栈顶,看是否匹配,不匹配false
一开始遇到右括号,也就是stack是空的,直接false
结束了,栈里面还有元素,也要false