Java题目详解——LeetCode20.有效的括号
创始人
2024-04-01 01:16:42

目录 

题目链接:LeetCode20.有效的括号

一.题目要求

二.解题思路

三.具体代码

四.运行截图


题目链接:LeetCode20.有效的括号

一.题目要求

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。

示例 1:

输入:s = "()"
输出:true

示例 2:

输入:s = "()[]{}"
输出:true

示例 3:

输入:s = "(]"
输出:false

提示:

1 <= s.length <= 10^{4}
s 仅由括号 '()[]{}' 组成

二.解题思路

        首先,我们看到这种匹配问题,就可以联想到利用栈的结构特性——先进后出,当遇到左括号时入栈,遇到右括号时出栈比较,不就能轻松实现括号匹配了。

        那具体应该如何操作呢?

        第1步,我们肯定要建立一个空栈,并且把字符串转换为 "可独立操作字符的" 字符数组,然后通过遍历字符数组进行操作。

        第2步,遍历字符数组时,我们就要在其中对字符是 "左括号" 还是 "右括号" 进行判断了,如果是左括号,就进行入栈操作(push(e)),如果是右括号,就进行出栈操作(pop())。

Deque stack=new LinkedList<>();    //定义栈char[] array=s.toCharArray();    //转换字符数组for(char c:array){if(c=='('||c=='['||c=='{'){//入栈stack.push(c);}else{//出栈stack.pop();}  
}  

        第3步,当然光这样是不够的,我们还需要进行括号的匹配操作,并不是任意的左括号都能和任意的右括号相匹配,所以我们在所有左括号入栈后,还要保存这时出栈的左括号,并和此时出现的右括号进行匹配操作。

//走到这步说明一定遇到了右括号
char left=stack.pop();    //保存出栈的左括号
if(!isMatch(left,c)){    //进行括号匹配return false;
}

将括号匹配的操作独立为一个函数: 

private boolean isMatch(char left,char right){if(left=='('){return right==')'; }else if(left=='['){return right==']';}return right=='}';
}

        第4步, 我们还要考虑括号 "数量不匹配" 的情况,此时就要考虑应该在什么时候进行判断,如果是左括号少于右括号,那么说明肯定在没有遍历完的时候,栈就空了(栈只存储了左括号),所以可以在出栈前先判断栈是否为空;如果是右括号少于左括号,那肯定在遍历结束的时候,栈不为空(栈中的左括号正好和后面的右括号全部匹配,已全部出栈)。

        此时,我们已经完成这道题目,下面来看一下画图示例:

以示例2为例:

三.具体代码

class Solution {public boolean isValid(String s) {Deque stack=new LinkedList<>();char[] array=s.toCharArray();for(char c:array){if(c=='('||c=='['||c=='{'){stack.push(c);}else{if(stack.isEmpty()){return false;}char left=stack.pop();if(!isMatch(left,c)){return false;}}    }if(stack.isEmpty()){return true;}else{return false;}}private boolean isMatch(char left,char right){if(left=='('){return right==')'; }else if(left=='['){return right==']';}return right=='}';}
}

四.运行截图

如想了解栈(Stack)的相关知识,请查阅:

数据结构☞栈和队列​​​​​​​

如有建议或想法,欢迎一起讨论学习~

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...