孤樱懶契 发表于 2021-6-25 17:29

【Java】leetcodet题目-有效括号利用栈LIFO实现(题解)

本帖最后由 孤樱懶契 于 2021-10-23 22:36 编辑



# Leetcode题目 20

!(https://gitee.com/gylq/cloudimages/raw/master/img/image-20210625172525394.png)

# 执行结果

!(https://gitee.com/gylq/cloudimages/raw/master/img/image-20210625172657711.png)

# Solution题解

```java
class Solution {
    public boolean isValid(String s){

      Stack<Character> stack = new Stack<>();
      for(int i = 0 ; i < s.length(); i ++){
            char c = s.charAt(i);
            if(c == '(' || c == '[' || c== '{')
                stack.push(c);
            else {
                if(stack.isEmpty())
                  return false;

                char topChar = stack.pop();
                if(c == ')' && topChar != '(')
                  return false;
                if(c == ']' && topChar != '[')
                  return false;
                if(c == '}' && topChar != '{')
                  return false;

                }
            }
            return stack.isEmpty();
      }

      public static void main(String[] args){

            System.out.println((new Solution()).isValid("()[]{}"));
            System.out.println((new Solution()).isValid("(])]{}"));
      }
    }

```

santus36 发表于 2021-6-25 18:50

兄啊,哪有只放代码的题解啊

孤樱懶契 发表于 2021-6-25 19:08

santus36 发表于 2021-6-25 18:50
兄啊,哪有只放代码的题解啊

这个代码,看不懂吗,基础的

KID丶 发表于 2021-6-25 20:29

在基础也要给出思路。

无名氏wyw 发表于 2021-6-25 20:30

孤樱懶契 发表于 2021-6-25 19:08
这个代码,看不懂吗,基础的

笑飞了,哪有通过代码看算法的?
要是人家几百行的大分块,从上到下各种优化是非作者看得懂的?

layuai 发表于 2021-6-25 20:57

哈哈哈,这道题前几个月做过,挺简单的

Sentiment1996 发表于 2021-7-6 16:01

这个代码是有问题的,如果是“([{}])”则按照题目愿意是false的,,但是因为LIFO,并不是一次压栈一次出栈的顺序,会导致true

Sentiment1996 发表于 2021-7-6 16:04

Sentiment1996 发表于 2021-7-6 16:01
这个代码是有问题的,如果是“([{}])”则按照题目愿意是false的,,但是因为LIFO,并不是一次压栈一次出栈 ...

如果是我对题的理解有问题,就忽略吧
页: [1]
查看完整版本: 【Java】leetcodet题目-有效括号利用栈LIFO实现(题解)