企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] # 题目 来自leetcode中文社区 https://leetcode-cn.com/problems/valid-parentheses/description/ 给定一个只包括 `'(',')','{','}','[',']' `的字符串,判断字符串是否有效。 有效字符串需满足: 1. 左括号必须用相同类型的右括号闭合。 2. 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 # 分析 ![](https://box.kancloud.cn/348237e82aa9fa9a5f57cfc9dd9a0ef3_1141x424.png) 一样的话就出栈 栈顶元素反映了在嵌套的层次关系中,最近的需要匹配的元素 # 代码 ~~~ import java.util.Stack; public class Solution { public boolean isValid(String s) { Stack<Character> stack = new Stack<Character>(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); //如果是左括号就压入栈 if (c == '(' || c == '[' || c == '{') { stack.push(c); } else { if (stack.isEmpty()) { return false; } char topChar = stack.pop(); //如果右侧的括号是这个,但是左侧的括号不是他们匹配的,就返回false if (c == ')' && topChar != '(') { return false; } if (c == ']' && topChar != '[') { return false; } if (c == '}' && topChar != '{') { return false; } } } //如果栈还有字符,就表示他里面还有字符,但是没有人和他匹配了 return stack.isEmpty(); } } ~~~