欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java括号匹配问题介绍,

来源: javaer 分享于  点击 34601 次 点评:221

java括号匹配问题介绍,


目录
  • 题目描述:
  • 问题分析:
    • 1 可能存在左括号多的情况
    • 2 可能存在右括号多的情况
    • 3 存在括号不匹配的情况
  • 总结解题思路:
    • 代码实现:

      题目描述:

      给定一个只包括 ‘(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
      有效字符串需满足:
      左括号必须用相同类型的右括号闭合。
      左括号必须以正确的顺序闭合
      题目链接:括号匹配问题

      问题分析:

      1 可能存在左括号多的情况

      在这里插入图片描述

      2 可能存在右括号多的情况

      在这里插入图片描述

      3 存在括号不匹配的情况

      在这里插入图片描述

      总结解题思路:

      1 我们在遍历字符串的过程中,需要先取得栈顶的元素与右括号比较,看是否匹配,如果匹配才能出栈。
      2 在出栈的过程中,如果栈为空,说明右括号多了,如果发现栈顶元素与右括号不是匹配的括号,那么就需要直接return了
      3 在整个字符串遍历结束之后,我们要判断一下栈是否为空,如果为空,说明是匹配的,否则就是左括号偏多的情况。

      代码实现:

      public boolean isValid(String s) {
              Stack<Character> stack = new Stack<>();
              for(int i = 0;i<s.length();i++){
                  char ch = s.charAt(i);
                  if(ch=='('||ch=='['||ch=='{'){
                      stack.push(ch);//左括号进栈
                  }else{
                      if(stack.empty()){//栈为空,右括号多了
                          return false;
                      }else{
                          char ch1 = stack.peek();//取栈顶元素
                      if(ch1=='('&& ch ==')'||ch1=='{'&&ch=='}'||ch1=='['&&ch==']'){
                          stack.pop();//匹配出栈
                      }else{
                          return false;//括号不匹配
                      }
                      }
                  }
              }
              if(!stack.empty()){
                  return false;//栈不为空,左括号偏多了
              }
              return true;
          }
      

      到此这篇关于java括号匹配问题介绍的文章就介绍到这了,更多相关java括号匹配内容请搜索3672js教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持3672js教程!

      您可能感兴趣的文章:
      • Java 括号匹配问题案例详解
      • java括号匹配算法求解(用栈实现)
      • Java栈的应用之括号匹配算法实例分析
      相关栏目:

      用户点评