【bilibili】有效的括号

简介: 【bilibili】有效的括号

1. 题目描述

LeetCode20:有效括号

2. 题目分析

  1. 题目的意思比较简单,就是一个简单的模拟操作,当为{ ( [ 时直接入栈,当为} ) ]时判断栈顶的字符是不是相对应的字符,不是,直接返回
  2. 这里有几个坑点,总结一下:不要忘了最后判断栈是否为空、不要忘了null/0、不要忘了当栈为0时,出现} ) ]直接返回false
    主要的测试样例:""[]
  3. 做的时候,第一次错了最后栈大小的判断,第二次错了栈空取出来的异常

3. 题目代码

class Solution {
    public boolean isValid(String s) {
        if (s.length() == 0 || s == null) {
      return true;
    }
        if(s.length() % 2 == 1){
            return false;
        }
    Stack<Character> stack = new Stack<Character>();
    for (int i = 0; i < s.length(); i++) {
      if (s.charAt(i) == '(' || s.charAt(i) == '[' || s.charAt(i) == '{') {
        stack.add(s.charAt(i));
      } else if (s.charAt(i) == ')') {
        if (stack.size() == 0 || stack.pop() != '(') {
          return false;
        }
      } else if (s.charAt(i) == ']') {
        if (stack.size() == 0 || stack.pop() != '[') {
          return false;
        }
      } else {
        if (stack.size() == 0 || stack.pop() != '{') {
          return false;
        }
      }
    }
    if (stack.size() != 0) {
      return false;
    } else {
      return true;
    }
    }
}


相关文章
|
2月前
|
算法 C++
Leetcode第二十二题(括号生成)
这篇文章讨论了如何使用递归算法解决LeetCode第22题“括号生成”的问题,提供了两种C++的实现方法,目的是生成所有有效的括号组合。
21 0
Leetcode第二十二题(括号生成)
|
2月前
|
存储 C++ 容器
Leetcode第二十题(有效的括号)
这篇文章介绍了如何使用栈来解决LeetCode第20题“有效的括号”问题,提供了两种方法:数组栈和容器栈,以及相应的C++代码实现。
21 0
|
7月前
leetcode代码记录(有效的括号
leetcode代码记录(有效的括号
40 1
|
7月前
栈刷题记(一-有效的括号)
栈刷题记(一-有效的括号)
栈刷题记(一-有效的括号)
|
7月前
|
算法
面试题 08.09:括号
面试题 08.09:括号
29 0
|
存储
【刷题】有效的括号
【刷题】有效的括号
【刷题】有效的括号
|
SQL 算法 数据挖掘
【边学边敲边记】LeetCode008:有效的括号
【边学边敲边记】LeetCode008:有效的括号
【边学边敲边记】LeetCode008:有效的括号
|
Rust 自然语言处理 算法
【算法】剑指 Offer II 085. 生成匹配的括号|22. 括号生成|面试题 08.09. 括号(多语言实现)
正整数 n 代表生成括号的对数,请设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
【算法】剑指 Offer II 085. 生成匹配的括号|22. 括号生成|面试题 08.09. 括号(多语言实现)
|
存储 Java Python
LeetCode每日一题-7:有效的括号
LeetCode每日一题-7:有效的括号