当前位置: 首页 > news >正文

【Java】【力扣】20.有效的括号

代码

class Solution {public boolean isValid(String s) {//初始化变量//mapMap<Character,Character> map=new HashMap<>();map.put('}','{');map.put(')','(');map.put(']','[');//栈Stack<Character> stack=new Stack();//遍历for (int i = 0; i <s.length() ; i++) {Character curC=s.charAt(i);//1.如果是右括号//判断栈顶是否为 对应的左//是 弹栈//不是 结束,返回falseif (map.containsKey(curC)) {//栈判空,如果空,falseif (stack.isEmpty()) {return false;}if (stack.peek().equals(map.get(curC))){stack.pop();}else {return false;}}else{//因为要么是 左括号 要么是 右括号,所以这else就完全针对左括号//2.如果是左括号,入栈stack.push(curC);}}//遍历结束,栈不为空,返回falseif (stack.isEmpty()){return true;}else {return false;}}
}

记录

总结

1. 栈的常用方法

new 对象:Stack<Character> stack=new Stack();

push(E item) - 将元素压入栈顶

pop() - 移除并返回栈顶元素

peek() - 查看栈顶元素但不移除--如果 栈为空会报错,所以要主要判空

empty() - 检查栈是否为空

import java.util.Stack;public class StackExample {public static void main(String[] args) {// 创建栈Stack<String> stack = new Stack<>();// 入栈(push)stack.push("A");stack.push("B");stack.push("C");// 获取栈顶元素但不移除(peek)String topElement = stack.peek(); // 返回"C"// 出栈(pop)String popped = stack.pop(); // 移除并返回"C"// 检查栈是否为空boolean isEmpty = stack.empty(); // false}
}

记忆:

push(E item)====push 推,推入栈

pop()====pop:突然弹出

pop 整体有种 很突然的感觉

例如kpop,炸裂的 突然的

peek()偷看

其他

注意:Stack是线程安全的,但性能不如Deque接口的实现类(如ArrayDeque)。Java官方推荐使用Deque代替Stack来实现栈功能。

Deque<Character> stack = new LinkedList<Character>();

其他一样

2. 队列的常用方法

在 Java 中,队列(Queue)栈(Stack) 是两种不同的数据结构,它们的操作方式不同。

1. 队列(Queue)的基本操作

Queue 接口,常用实现类有 LinkedListArrayDeque

方法

作用

队列为空时

add(e) / offer(e)

入队(添加元素到队尾)

add() 满时抛异常,offer() 返回 false

remove() / poll()

出队(移除并返回队头元素)

remove() 抛异常,poll() 返回 null

element() / peek()

查看队头元素(不移除)

element() 抛异常,peek() 返回 null

示例代码:

import java.util.LinkedList;
import java.util.Queue;public class QueueExample {public static void main(String[] args) {Queue<String> queue = new LinkedList<>();// 入队queue.offer("A");  // 或 queue.add("A")queue.offer("B");// 查看队头(不移除)String head = queue.peek();  // "A"(队列空时返回 null)// 或者 queue.element()(队列空时抛异常)// 出队String first = queue.poll();  // "A"(队列空时返回 null)// 或者 queue.remove()(队列空时抛异常)System.out.println(queue);  // 输出 [B]}
}

3. Character 新对象

1-new

2-直接单引号

举例1

        Character c1='{';Character c2=new Character('c');

举例2

        Map<Character,Character> map=new HashMap<>();map.put('}','{');map.put(')','(');map.put(']','[');

4.map初始化元素

方法1

 Map<Character,Character> map=new HashMap<>();map.put('}','{');map.put(')','(');map.put(']','[');

方法2;括号后 双花括号

 Map<Character,Character> map2=new HashMap<>()
{{put('}','{');put(')','(');put(']','[');}};

http://www.dtcms.com/a/283476.html

相关文章:

  • 基于迁移学习的培养基配方开发方法
  • XSS-LABS的Level1-8
  • Python —— 真题三
  • NumPy 详解
  • 【static 修饰局部变量、全局变量、函数】
  • Swift6.0 - 5、基本运算符
  • 账户和组管理
  • JavaEE——死锁
  • PowerBI实现仅在需要图表时显示图表
  • 傅里叶变换算子性质证明
  • GTSuite许可管理常见问题及解决方案
  • 基于FPGA的IIC控制EEPROM读写(1)
  • Mybatis07-逆向工程
  • 《python语言程序设计》2018版第8章5题编写函数统计特定不重复字符串s2在s1中的出现次数
  • C#获取当前系统账户是否为管理员账户
  • 资源利用率提升50%:Serverless 驱动国诚投顾打造智能投顾新范式
  • 用Amazon Q Developer助力Python快捷软件开发
  • EMS4000/EMS3900/EMS4100/EMS3157/EMS/23157高性能高质量模拟开关芯片
  • Go语言自学笔记(2.3-2.6)
  • C++:vector(2)之vector的模拟实现
  • 使用 SeaTunnel 建立从 MySQL 到 Databend 的数据同步管道
  • [2025CVPR-图象检索方向]CCIN:用于合成图像检索的合成冲突识别和中和模型
  • OWASP Top 10 攻击场景实战
  • 简单易懂,什么是连续分配管理方式
  • Vue3+Ts实现父子组件间传值的两种方式
  • 设计模式之【观察者模式】
  • 多维动态规划题解——不同路径【LeetCode】记忆化搜索
  • ai 编程工具,简单总结
  • 16路串口光纤通信FPGA项目实现指南 - 第二部分(下)
  • Day36 Java方法和流程控制练习 计算器