有效的括号
leetcode第20题
原链接:https://leetcode-cn.com/problems/valid-parentheses
题目描述
给定一个只包括 '(',')','{','}','[',']'
的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()",输出:true
示例 2:
输入:s = "()[]{}",输出:true
示例 3:
输入:s = "(]",输出:false
示例 4:
输入:s = "([)]",输出:false
示例 5:
输入:s = "{[]}",输出:true
解题思路
解题过程中会用到数据结构:栈
依次遍历给定的字符串s的每个字符,如果当前遍历的字符是 '(','[','{'
这三个字符其中之一时,将其入栈,放入栈顶。
如果当前遍历的字符是 ')',']','}'
这三个字符其中之一时,判断栈顶的字符和当前遍历的字符是否满足如下条件:
- 当前:')',栈顶'('
- 当前:']',栈顶'['
- 当前:'}',栈顶'{'
当满足上述三个条件之一,则栈顶字符出栈,继续遍历剩下的字符,如果不满足任何条件,那么就可以返回false了,因为这种情况后面的字符永远也不会与之匹配。
直到遍历完所有的字符。如果此时栈中没有任何字符,则证明能全部闭合。否则不能全部闭合。
代码(java)
class Solution {
public boolean isValid(String s) {
if (s==null||s.length()%2!=0){
return false;
}
LinkedList<Character> linkedList=new LinkedList();
char[] as=s.toCharArray();
for(char a:as){
if(a=='{'||a=='['||a=='('){
linkedList.addLast(a);
}else{
if(linkedList.size()>0){
char c=linkedList.getLast();
if(c=='{'&&a=='}'||c=='('&&a==')'||c=='['&&a==']'){
linkedList.removeLast();
}else{
return false;
}
}else{
return false;
}
}
}
if(linkedList.size()>0){
return false;
}
return true;
}
}
猜你喜欢
ofc
索引失效的几种情况(MySQL)
official
673
1.前导模糊查询不能利用索引(like'%XX'或者like'%XX%')假如有这样一列code的值为'AAA','AAB','BAA','BAB',如果wherecodelike'%AB'条件,由
ofc
信号量机制
official
785
《操作系统》信号量机制的两种类型整形信号量记录型信号量复习回顾+思考:之前学习的这些进程互斥的解决方案分别存在哪些问题?进程互斥的四种软件实现方式(单标志法、双标志先检查、双标志后检查
blog
c#获取和设置默认浏览器的版本号
工具
2825
publicstaticstringGetDetailVersion(stringtext){//通过WebBrowser方案获取版本号//intmainVer=(newWebBrowser
ofc
有多少小于当前数字的数字
official
778
-the-current-number/问题描述给你一个数组nums,对于其中每个元素nums[i],请你统计数组中比它小的所有数字的数目。换而言之,对于每个nums[i]你必须计算出有效的j的数量,其中j满足j!=i且nu
ofc
mysql整数类型的范围
weblog
1004
mysql整数类型的范围MySQL支持多种数据类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。其中,整数类型包括:TINYINT、SMALLINT、MEDIUMINT、INT和
ofc
二叉树的所有路径
official
1012
leetcode第257题(简单)原链接:https://leetcode-cn.com/problems/binary-tree-paths/题目描述给定一个二叉树,返回所有从根节点到叶子节点的路
blog
算法-没有bug的二分查找
数据结构与算法
6811
科普:第一篇二分搜索论文是1946年发表,然而第一个没有bug的二分查找法却是在1962年才出现,中间用了16年的时间。定义在计算机科学中,二分查找(英语:binarysearch),也称折半搜索
blog
mqtt 协议报文解析
mqtt协议
1613
)五、不同控制报文类型的协议格式5.1CONNECT5.1.1可变报头:5.1.2:关于遗嘱相关概念说明5.1.3有效载荷(Payload)5.2CONACK5.2.1可变报头
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。