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;}

    }

  }

 

posted on 2021-01-30 13:30  东宁王孟川  阅读(75)  评论(0)    收藏  举报