【leetcode hot 100 20】有效的括号

server/2025/4/2 3:15:38/

解法一:使用栈

java">class Solution {public boolean isValid(String s) {int n = s.length();if(n%2!=0){return false;}// 定义map,便于查找对应的括号Map<Character, Character> map = new HashMap<>();map.put(')','(');map.put(']','[');map.put('}','{');// 利用栈帮助判断Deque<Character> stack = new LinkedList<>();for(int i=0; i<n; i++){char ch = s.charAt(i);if(map.containsKey(ch)){// 是左括号if(stack.isEmpty() || stack.peek() != map.get(ch)){return false;}stack.pop();}else{stack.push(ch);}}return stack.isEmpty();}
}

注意:

  • map不能LinkedMap,只能HashMap
    • List的实现:ArrayListLinkedListVector
    • Set的实现:HashSetLinkedHashSetTreeSet
    • Map的实现:HashMapLinkedHashMapTreeMap
    • Queue的实现:LinkedListArrayDequePriorityQueue
    • Stack的实现:LinkedListArrayDeque
  • 申请栈:
    - Deque<Character> stack = new LinkedList<>();
    • Deque<Character> stack = new ArrayDeque<>();
  • 申请队列:
    • Queue<Character> queue = new LinkedList<>();
    • Quque<Character> stack = new ArrayDeque<>();
  • LinkedListArrayDeque的区别:
    • 操作:
      ArrayDequeadd() remove()
      LinkedListoffer() poll() peek()

http://www.ppmy.cn/server/179025.html

相关文章

selenium之基础整理

安装步骤 1&#xff0c;在pycharm中下载selenium库&#xff1a;pip install selenium 2&#xff0c;把下载的chromedriver.exe驱动解压放到python根目录下&#xff08;如果没有检测到该驱动&#xff0c;可以把将chromedriver.exe配置到环境变量path中&#xff09; &#xff08;…

Ubuntu AX200 iwlwifi-cc-46.3cfab8da.0.tgz无法下载的解决办法

文章目录 前言一、检查网卡是否被识别二、确认内核模块是否可用1.AX200 wifi 要求内核5.12.检查 iwlwifi.ko 是否存在&#xff1a;3.如果未找到&#xff0c;可能是内核模块未正确生成。尝试安装 linux-modules-extra&#xff1a;4.再次检查 iwlwifi.ko 是否存在&#xff1a;5.确…

【React】List使用QueueAnim动画效果不生效——QueueAnim与函数组件兼容性问题

版本&#xff1a; “antd-mobile”: “^5.37.1”,“rc-queue-anim”: “^2.0.0”, 问题 在使用 QueueAnim 时&#xff0c;如果动画的子元素是 Ant Design Mobile 中的组件&#xff08;如 List.Item&#xff09;&#xff0c;可能会遇到动画不生效的问题&#xff0c;并且会看到…

【算法】十大排序算法(含时间复杂度、核心思想)

以下是 **十大经典排序算法** 的时间复杂度、空间复杂度及稳定性总结&#xff0c;适用于面试快速回顾&#xff1a;排序算法对比表 排序算法最佳时间复杂度平均时间复杂度最差时间复杂度空间复杂度稳定性核心思想冒泡排序O(n)O(n)O(n)O(1)稳定相邻元素交换&#xff0c;大数沉底…

Go语言中context.Context的

context.Context 是 Go 语言中用于管理请求生命周期、传递请求范围数据以及控制超时和取消的核心接口。它在并发编程、网络请求、微服务等场景中非常重要。以下是对 context.Context 的详细解释&#xff1a; 1. context.Context 的作用 context.Context 的主要作用包括&#x…

学习使用 Git 和 GitHub 开发项目的教程推荐

Git 和 GitHub 是现代软件开发中不可或缺的工具&#xff0c;无论你是个人开发者还是团队成员&#xff0c;掌握它们都能极大提升效率。本文精选了一系列优质教程资源&#xff0c;涵盖从基本 Git 命令到进阶多人协作的内容。这些教程既有文字形式&#xff0c;也有视频或交互式资源…

uv命令介绍(高性能Python包管理工具,旨在替代pip、pip-tools和virtualenv等传统工具)

文章目录 **主要功能**1. **快速安装和管理 Python 包**2. **生成和管理锁文件 (requirements.lock)**3. **创建虚拟环境**4. **与 poetry 兼容** **核心优势**1. **极快的速度**&#xff1a;基于 Rust 实现&#xff0c;利用多线程和缓存大幅加速依赖解析。2. **轻量且独立**&a…

游戏引擎学习第172天

总结今天的计划 这次的项目我们没有使用任何游戏引擎或者第三方库&#xff0c;而是完全自己动手编写。这种方式可能没有经济效益&#xff0c;但我认为每个人都应该有一次亲身经历&#xff0c;了解开发一款游戏时所涉及的所有内容。这样能让开发者更加灵活&#xff0c;能够做很…