首页 > 编程语言 > 详细

力扣算法---stack

时间:2021-01-30 17:32:45      阅读:27      评论:0      收藏:0      [点我收藏+]

20-有效的括号 

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

  有效字符串需满足:  

  左括号必须用相同类型的右括号闭合。
  左括号必须以正确的顺序闭合。

  示例 1:

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

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

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

使用Stack实现:

  初始化:Deque<Character> stack = new ArrayDeque<Character>();

  返回栈顶的元素并且弹出:pop()

  将新元素压入栈内:add()或push()

思路:将左括号压入栈内,碰到右括号则返回栈顶元素进行比较。配对成功则返回true,否则返回false

java代码实现:

  public boolean isValid(String s)

  {

    if(s.length() == 0)

    {  //如果字符串返回长度为0 直接返回true

      return true;

    }

    if(s.length() % 2)

    {//如果字符串长度为奇数,则返回true(因为括号都成双出现)

      return false;

    }

    Deuqe<Charcter> stack = new ArrayStack<Character>();

    char cc[] = s.toCharArray();

    for(char c:cc)

    {

      if(c==‘(‘&&c==‘[‘&&c==‘{‘)

      {  

        stack.push(c)

      }else{

        if(stack.size() == 0)

        {  

          return false;

        }else

        {

          temp = stack.pop();

          if(c == ‘)‘)

          {

            if(temp != ‘(‘)

            {

              return false;

            }

          }

           if(c == ‘)‘)

          {

            if(temp != ‘(‘)

            {

              return false;

            }

          }

           if(c == ‘)‘)

          {

            if(temp != ‘(‘)

            {

              return false;

            }

          }

        }
      }

      //最后判断栈中是否还有元素

      if(stack.size() == 0)

      {return true;}

      else

      {return false;}

    }

  }

 

力扣算法---stack

原文:https://www.cnblogs.com/mengriver/p/14348797.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!