首页 > 其他分享 >力扣 20.有效的括号

力扣 20.有效的括号

时间:2023-01-06 23:00:30浏览次数:31  
标签:20 list else 力扣 括号 return false size

这是开始刷题的第1天。

 

看到题目首先想到的是栈,但又转念一想,或许我只用记录左边括号的各个数量,当匹配到右括号时,减去相应的数量即可。写到一半发现了自己的逻辑漏洞,这样写的话,如果括号没有按正确的顺序闭合,我的代码也能通过。所以还是老老实实用栈的想法写。用数组模拟栈,遇到左括号就压入,遇到右括号就和数组最后一位作比对,正确就删除数组中左括号,不正确就返回false。

代码如下:

import java.util.ArrayList;

public class ValidParentheses {
public boolean isValid(String s){
int len = s.length();
ArrayList list = new ArrayList(); //用数组模拟栈,遇到左括号就加入,遇到右括号比对后删除。
for(int i=0; i<len; i++){
Character ch = s.charAt(i);
switch(ch){
case '(':
list.add(ch);
break;
case '[':
list.add(ch);
break;
case '{':
list.add(ch);
break;
case ')':
if (list.size() == 0){
return false;
}
else if(list.get(list.size()-1).equals('(')){ //判断括号顺序是否对应
list.remove(list.size()-1);
}
else return false;
break;
case ']':
if (list.size() == 0){
return false;
}
else if(list.get(list.size()-1).equals('[')){
list.remove(list.size()-1);
}
else return false;
break;
case '}':
if (list.size() == 0){
return false;
}
else if(list.get(list.size()-1).equals('{')){
list.remove(list.size()-1);
}
else return false;
break;
}

}
if (list.size() == 0){
return true;
}
else return false;
}

}
力扣运行结果如下:
看了一些题解以后,大部分都是用栈来解题,不过我发现我没有直接用java里面的栈类,直接用了数组来模拟栈。 除了栈以外,看到题解有一个思路蛮有趣。先判断字符串长度是否为偶数,先筛选了一部分错误的出去。然后遍历次数为字符串长度的一半,用空字符串来代替"()""[]""{}"。

标签:20,list,else,力扣,括号,return,false,size
From: https://www.cnblogs.com/hesy0530/p/17031607.html

相关文章

  • 20 张图带你全面了解 HTTPS 协议,再也不怕面试问到了!
    本文详细介绍了HTTPS相较于HTTP更安全的原因,包括对称加密、非对称加密、完整性摘要、数字证书以及SSL/TLS握手等内容,图文并茂、理论与实战结合、建议收藏!1.不安......
  • MaoWei-2020-HistoryRepeatsItself-ECCV
    HistoryRepeatsItself:HumanMotionPredictionviaMotionAttention#paper1.paper-info1.1MetadataAuthor::[[WeiMao]],[[MiaomiaoLiu]],[[MathieuSal......
  • 【题解】P4027 [NOI2007] 货币兑换
    题意好长,但是不想概括了。\cdq/!思路cdq分治+凸包。首先考虑令\(f_i\)表示第\(i\)天可以得到的最大金额,\(f_1=s\)因为\(rate_i\)是常数,并且保证存在最优方......
  • USACO 2022 December Contest
    USACO2022DecemberContest参加的USACO的第一次比赛。没有打现场赛,后来跟着看了看题目,感觉总的来说,难度中等偏上,虽有些乏力,但是没有超出能力范围。下次争取打现场赛。P......
  • the fourteenth——20223.1.6
    #include<stdio.h>intmain(){ 3,4,5;//这是一条语句 //把上面这条语句的值赋值给变量a inta=(3,4,5); printf("a=%d\n",a);}输出结果:a=5因为a的值是整......
  • sc stream-rabbit20230116
        一、Exchanges:testRabbit     二、MQ生产者  1、pom.xml<properties><java.version>1.8</java.version>......
  • CVE-2007-4556 s2-001
    漏洞名称S2-001远程代码执行利用条件WebWork2.1(withaltSyntaxenabled),WebWork2.2.0-WebWork2.2.5,Struts2.0.0-Struts2.0.8不受影响的版本:WebWork2.......
  • S2-009 CVE-2011-3923
    漏洞名称CVE-2011-3923S2-009远程代码执行漏洞利用条件Struts2.0.0-Struts2.3.1.1漏洞原理OGNL提供了广泛的表达式评估功能等功能。该漏洞允许恶意用户绕过Para......
  • Ubutnu 20.04 安装和使用单机版hadoop 3.2 [转载]
    按照此文档操作,可以一次部署成功:Ubutnu20.04安装和使用单机版hadoop3.2部署之后,提交测试任务报资源问题。原因是yarn还需要配置,如下:$catyarn-site.xml<?xml......
  • CVE-2016-4437
    漏洞名称Apacheshiro1.2.4反序列化漏洞(CVE-2016-4437)利用条件ApacheShiro<=1.2.4漏洞原理Shiro提供了记住我(RememberMe)的功能,比如访问淘宝等网站时,关闭了浏......