LeetCode 20:有效的括号 Valid Parentheses
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判断字符串是否有效。
Given a string containing just the characters '('
, ')'
, '{'
, '}'
, '['
and ']'
, determine if the input string is valid.
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
An input string is valid if:
- Open brackets must be closed by the same type of brackets.
- Open brackets must be closed in the correct order.
注意空字符串可被认为是有效字符串。
Note that an empty string is also considered valid.
示例 1:
输入: "()" 输出: true
示例 2:
输入: "()[]{}" 输出: true
示例 3:
输入: "(]" 输出: false
示例 4:
输入: "([)]" 输出: false
示例 5:
输入: "{[]}" 输出: true
解题思路:
很简单的题,将字符串每个字符压入栈,简单判断即可。如:
输入: "{[]}" 初始栈为空,'{' 入栈 下一个字符 栈顶元素 '{'与 '[' 不匹配,'[' 入栈 下一个字符 栈顶元素 '['与 ']' 匹配,'[' 出栈 下一个字符 栈顶元素 '{'与 '}' 匹配,'}' 出栈 结束,栈为空,返回 True
关键在于判断字符是否匹配,匹配的标准是相反的括号字符,并非相同字符。可以用 switch 判断三种括号字符,或者三个 if 语句,再或者可以用散列表映射括号关系。
Java:
class Solution { public boolean isValid(String s) { Stack<Character> stack = new Stack<>();//初始化栈 for (char b : s.toCharArray()) { switch (b) { case '(': { stack.push(')'); break; } case '{': { stack.push('}'); break; } case '[': { stack.push(']'); break; } default: {//不匹配的情况返回false if (stack.isEmpty() || stack.pop() != b) { return false; } } } } return stack.isEmpty();//栈为空则证明全部匹配,返回true,否则返回false } }
Python:
注:python中没有 switch...case... 语句,官方让用 if 判断代替...
class Solution: def isValid(self, s: str) -> bool: stack = [] for c in s: if c == '[': stack.append(']') elif c == '(': stack.append(')') elif c == '{': stack.append('}') elif len(stack) == 0 or stack.pop() != c: return False return len(stack) == 0
欢迎关注微.信公.众号:爱写Bug
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
『StabilityGuide』| 10+位阿里技术专家共同发起稳定性知识库开源项目
我们穿过山和大海,也见过人山人海。我们见过各类故障,也排过千雷万险。这一次,不如我们一起,开启稳定性的探索之旅。让无法解决的问题少一点点,让世界的确定性多一点点。 无论是前端业务的开发者,还是后端架构的开发者,都会遇到业务稳定性的难题。但稳定性的话题涉及之广、之深,很难通过一两篇文章道清原委。因此,我们集结了多位阿里技术工程师,他们来自性能压测、故障演练、JVM、应用容器、服务框架、流量调度、监控、诊断等不同的技术领域,以更结构化的方式来打造稳定性领域的知识库,该知识库的目录将分为: 事前规范:代码规约、变更管控、性能压测、故障演练、风险预案、限流降级、业务隔离; 事中“止血”:监控、告警、异常巡检、流量调度; 事后诊断:系统诊断、JVM诊断、组件诊断、在线诊断、链路追踪、Root cause; 但我们也深知,仅凭阿里自身的业务场景和技术积
- 下一篇
JS压缩图片,在线图片压缩,Cavas压缩图片
在线DEMOhttps://oktools.net/tinyimg 1. 选择一张图片 const img_original = document.getElementById('img_original'); const img_output = document.getElementById('img_output'); let blob; function preview(file) { let reader = new FileReader(); reader.onload = function () { img_original.src = this.result; img_original.onload = () => { console.log('图片原始宽高:', img_original.naturalWidth, img_original.naturalHeight); console.log('图片原始大小:', file.size) } }; reader.readAsDataURL(file); } 2. 使用Canvas压缩 function comp...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题