java题解LeetCode20.有效的括号

 更新时间:2023年10月19日 08:51:44   作者:健身的墨镜  
这篇文章主要为大家介绍了java题解LeetCode20.有效的括号示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

题目

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

有效字符串需满足:

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

示例 1:
输入:s = "()"
输出:true
示例 2:

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

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

代码如下

public boolean isValid(String s) {
      if(s.length()==0){
          return true;
      }
      Stack<Character> stack=new Stack<>();
      for (int i = 0; i < s.length(); ) {

          stack.push(s.charAt(i));
          i++;
          while((!stack.isEmpty())&&(i<s.length())&&((s.charAt(i)==')'&&stack.peek()=='(')||(s.charAt(i)=='}'&&stack.peek()=='{')||(s.charAt(i)==']'&&stack.peek()=='['))){
              stack.pop();
              i++;
          }
      }
      return stack.isEmpty();

  }

题解采用了一种逆向思维:即遍历到左半部分括号时,向栈中压入对应的右半部分,那么就可通过是否相等来判断(虽然本质是一样的hhh)

public boolean isValid(String s) {
      if(s.length()==0){
          return true;
      }
      Stack<Character> stack=new Stack<>();
      for (int i = 0; i < s.length(); i++) {
          if(s.charAt(i)=='('){
              stack.push(')');
          }else if(s.charAt(i)=='['){
              stack.push(']');
          }else if(s.charAt(i)=='{'){
              stack.push('}');
          }else if(stack.isEmpty()||stack.peek()!=s.charAt(i)){
              return false;//这里考虑后面会有尾巴的情况
          }else{
              stack.pop();
          }
      }
      return stack.isEmpty();
  }

以上就是java题解LeetCode20.有效的括号的详细内容,更多关于java题解有效的括号的资料请关注脚本之家其它相关文章!

相关文章

  • Java实现线程按序交替执行的方法详解

    Java实现线程按序交替执行的方法详解

    这篇文章主要为大家详细介绍了Java如何实现线程按序交替执行,文中的示例代码讲解详细,对我们了解线程有一定帮助,需要的可以参考一下
    2022-10-10
  • OpenFeign实现远程调用

    OpenFeign实现远程调用

    这篇文章主要为大家详细介绍了OpenFeign实现远程调用,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • SpringDataRedis简单使用示例代码

    SpringDataRedis简单使用示例代码

    这篇文章主要介绍了SpringDataRedis简单使用,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • 解决fcitx输入法在IDEA中输入法候选框无法跟随光标移动的问题

    解决fcitx输入法在IDEA中输入法候选框无法跟随光标移动的问题

    这篇文章主要介绍了解决fcitx输入法在Intellij IDEA开发工具中输入法候选框无法跟随光标移动的问题,代码简单易懂对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Aop动态代理和cglib实现代码详解

    Aop动态代理和cglib实现代码详解

    这篇文章主要介绍了Aop动态代理和cglib实现代码详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • JAVA实现Token自动续期机制的示例代码

    JAVA实现Token自动续期机制的示例代码

    本文主要介绍了JAVA实现Token自动续期机制的示例代码,通过动态调整会话生命周期平衡安全性与用户体验,解决固定有效期Token带来的风险与不便,感兴趣的可以了解一下
    2025-09-09
  • java 获取对象中为null的字段实例代码

    java 获取对象中为null的字段实例代码

    这篇文章主要介绍了java 获取对象中为null的字段实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • Java编程实现调用com操作Word方法实例代码

    Java编程实现调用com操作Word方法实例代码

    这篇文章主要介绍了Java编程实现调用com操作Word方法实例代码,代码注释很详细,在这里分给大家,需要的朋友可以参考下。
    2017-09-09
  • 关于Jedis的用法以及Jedis使用Redis事务

    关于Jedis的用法以及Jedis使用Redis事务

    这篇文章主要介绍了关于Jedis的用法以及Jedis使用Redis事务问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • VSCode中搭建JAVA+MAVEN开发环境的完整步骤

    VSCode中搭建JAVA+MAVEN开发环境的完整步骤

    Maven是一个Java项目管理和构建工具,它可以定义项目结构、项目依赖,并使用统一的方式进行自动化构建,是Java项目不可缺少的工具,这篇文章主要介绍了VSCode中搭建JAVA+MAVEN开发环境的完整步骤,需要的朋友可以参考下
    2026-02-02

最新评论