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
LeetCode 20:有效的括号 Valid Parentheses的更多相关文章
- LeetCode 20. 有效的括号(Valid Parentheses)
20. 有效的括号 20. Valid Parentheses 题目描述 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须 ...
- LeetCode 笔记系列八 Longest Valid Parentheses [lich你又想多了]
题目:Given a string containing just the characters '(' and ')', find the length of the longest valid ( ...
- leetcode第31题--Longest Valid Parentheses
Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ...
- leetcode解题报告 32. Longest Valid Parentheses 用stack的解法
第一道被我AC的hard题!菜鸡难免激动一下,不要鄙视.. Given a string containing just the characters '(' and ')', find the le ...
- LeetCode (32) Longest Valid Parentheses
题目 Given a string containing just the characters '(' and ')', find the length of the longest valid ( ...
- Java实现 LeetCode 20 有效的括号
20. 有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. ...
- LeetCode 20. 有效的括号(Valid Parentheses )
题目描述 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空字 ...
- LeetCode第[20]题(Java):Valid Parentheses
题目:有效的括号序列 难度:Easy 题目内容: Given a string containing just the characters '(', ')', '{', '}', '[' and ' ...
- [Swift]LeetCode20. 有效的括号 | Valid Parentheses
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...
随机推荐
- tinker接入
对于热修复无非就是两大类,一类是tencent代表的classloader模式的,另一类是阿里系代表的底层方面替换. 下面以本人的经验介绍下微信的tinker接入: 命令行接入方式: gradle接入 ...
- Kafka生产消费API JAVA实现
Maven依赖: <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka- ...
- Z从壹开始前后端分离【 .NET Core2.2/3.0 +Vue2.0 】框架之五 || Swagger的使用 3.3 JWT权限验证【必看】
本文梯子 本文3.0版本文章 前言 1.如何给接口实现权限验证? 零.生成 Token 令牌 一.JWT ——自定义中间件 0.Swagger中开启JWT服务 1:API接口授权策略 2.自定义认证之 ...
- 对data标签获取到的时间进行比较
前言 data(时间属性)是HTML5中新增的一个属性,常用于选择日期.时间,但这个是无法通过属性去限制其不能选择过去的时间的,这个时候就需要我们在JQ中对其进行比较了! 由于放效果图,需要在数据库里 ...
- Dynamics 365 CE将自定义工作流活动程序集注册到磁盘并引用其他类库
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- Xcode里面如何添加和配置pch文件??
开发工具/原料: 1.Mac 2.Xcode(我这里目前用的Xcode的最新版本Xcode 7.3) PCH文件的部分发展史: 定义:pch全称为“precompiled header”,也就是预编译 ...
- 阿里Java完整学习资料
最近有很多读者问我如何系统的进行 Java 学习,于是我就翻阅一下之前收集的资料,分享给大家. 这份资料是我在市面上众多的 Java 学习资料中挑选出来的,相信肯定是精品.而且这份资料是出自阿里,具有 ...
- FastJSON使用例子
FastjsonTest.java package demo; import java.util.ArrayList; import java.util.Date; import java.util. ...
- 结对编程(Java实现)
一.Github项目地址:https://github.com/qiannai/CreateArithmetic 二.PSP2.1表格: PSP2.1 Personal Software Proces ...
- python3+Scrapy爬虫使用pipeline数据保存到文本和数据库,数据少或者数据重复问题
爬取的数据结果是没有错的,但是在保存数据的时候出错了,出现重复数据或者数据少问题.那为什么会造成这种结果呢? 其原因是由于Spider的速率比较快,而scapy操作数据库操作比较慢,导致pipelin ...