代码随想录day11

news/2024/11/17 3:01:30/

20. 有效的括号

● 力扣题目链接
● 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串,判断字符串是否有效。
● 有效字符串需满足:
● 左括号必须用相同类型的右括号闭合。
● 左括号必须以正确的顺序闭合。
● 注意空字符串可被认为是有效字符串。

思路

● 使用栈即可,前括号就入栈对应的后括号
● 如果不是前括号,看栈是否空"{}}“,然后看栈顶元素能否匹配”{]“,不能返回false,能就弹出
● 循环结束看栈是否为空”("
● 时间复杂度O(n) 空间复杂度O(n)

代码

class Solution {public boolean isValid(String s) {Deque<Character> stack = new ArrayDeque();for (int i = 0; i < s.length(); i++) {Character c = s.charAt(i);if (c.equals('(')) {stack.addFirst(')');} else if (c.equals('[')) {stack.addFirst(']');} else if (c.equals('{')) {stack.addFirst('}');} else if (stack.isEmpty() || !stack.peekFirst().equals(c)) {return false;} else {stack.removeFirst();}}return stack.isEmpty();}
}

1047. 删除字符串中的所有相邻重复项

● 力扣题目链接
● 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。
● 在 S 上反复执行重复项删除操作,直到无法继续删除。
● 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

思路

● 使用栈,遍历字符串,如果栈空或元素不相等,就入栈,否则出栈
● 最后遍历栈元素,从尾部弹出,返回字符串即可

代码

class Solution {public String removeDuplicates(String s) {Deque<Character> stack = new ArrayDeque();for (int i = 0; i < s.length(); i++) {if (stack.isEmpty() || stack.peek() != s.charAt(i)) {stack.addFirst(s.charAt(i));} else {stack.removeFirst();}}StringBuilder builder = new StringBuilder();while (!stack.isEmpty()) {builder.append(stack.removeLast());}return new String(builder);}
}

150. 逆波兰表达式求值

● 力扣题目链接
● 根据 逆波兰表示法,求表达式的值。
● 有效的运算符包括 + , - , * , / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
● 说明:
● 整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。

思路

● 使用栈处理即可,根据不同的情况入栈出栈

代码

class Solution {public int evalRPN(String[] tokens) {Deque<Integer> stack = new ArrayDeque();for (String str : tokens) {if (str.equals("+")) {stack.addFirst(stack.removeFirst() + stack.removeFirst());} else if (str.equals("-")) {int temp = stack.removeFirst();stack.addFirst(stack.removeFirst() - temp);} else if (str.equals("*")) {stack.addFirst(stack.removeFirst() * stack.removeFirst());} else if (str.equals("/")) {int temp = stack.removeFirst();stack.addFirst(stack.removeFirst() / temp);} else {stack.addFirst(Integer.parseInt(str));}}return stack.peekFirst();}
}

http://www.ppmy.cn/news/1050028.html

相关文章

数学建模-规划工具箱yalmip

官网下载 实例 %% yalmip 求解 yalmip clc;clear;close all; %% %sdpvar实型变量 intvar 整形变量 binvar 0-1型变量 psdpvar(3,1); %定义变量 %目标函数 要把求最大值转化为最小值 Objective-p(1)^2p(2)^2-p(2)*p(3);%约束条件 Constraints[0<p<1,(p(1)^2p…

功能性需求与非功能性需求的区别

如果你曾经负责过软件项目开展的全过程&#xff0c;就会知道需求定义在项目后期的重要性。清晰、明确的需求定义不仅有助于有效地管理客户期望&#xff0c;也有助于指导项目的顺利开展。 在项目前期阶段&#xff0c;如果需求定义不清晰&#xff0c;就会导致项目范围和成果定义…

clickhouse的ttl

TTL 只能在MergeTree系列表中使用&#xff0c;和分区一样&#xff0c;也只能在mergetree系列表中用 列: 当列的时间超过设置的值 -整列数据被删除 表: 当表中的某个写行的时间超过设置的值 -整行会被删除 定义值的存储时间。只能为MergeTree系列表指定。确定值的生存期。 当…

【python办公自动化】PysimpleGUI中的popup弹窗中的按钮设置居中

PysimpleGUI中的popup弹窗中的按钮设置居中 背景问题解决背景 默认的popup弹窗中的OK按钮是在最下面偏左侧一些,有时需要将按钮放置居中 问题解决 首先找到pysimplegui源代码文件中popup的部分 然后定位到19388行,源文件内容如下 关于popup弹窗OK按钮的设置,将pad属性…

vim编辑器用法详解

文章目录 Linux平台安装VimVim配置文件Vim四种模式基本操作多对象操作常用操作流程多窗口操作多标签页操作 Vim(Vi IMproved)是一个功能强大的文本编辑器&#xff0c;是Vi(Visual Editor)的一个增强版本。它以其高度可定制性、强大的编辑功能和广泛的插件支持而闻名。这里介绍一…

这所“984.5”保护一志愿!集成学硕爆冷,300分以上全要!考数二英一!

一、学校及专业介绍 南京航空航天大学&#xff08;Nanjing University of Aeronautics and Astronautics&#xff09;&#xff0c;简称南航&#xff08;NUAA&#xff09;。位于江苏省南京市&#xff0c;是一所具有航空航天民航特色、以理工类为主的综合性全国重点大学。国家“…

使用ApplicationRunner简化Spring Boot应用程序的初始化和启动

ApplicationRunner这个接口&#xff0c;我们一起来了解这个组件&#xff0c;并简单使用它吧。&#x1f92d; 引言 在开发Spring Boot应用程序时&#xff0c;应用程序的初始化和启动是一个重要的环节。ApplicationRunner是Spring Boot提供的一个有用的接口&#xff0c;可以帮助…

分类预测 | MATLAB实现SCNGO-CNN-LSTM-Attention数据分类预测

分类预测 | MATLAB实现SCNGO-CNN-LSTM-Attention数据分类预测 目录 分类预测 | MATLAB实现SCNGO-CNN-LSTM-Attention数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.SCNGO-CNN-LSTM-Attention数据分类预测程序&#xff0c;改进算法&#xff0c;融合正余弦和…