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

代码随想录day11

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.lryc.cn/news/133757.html

相关文章:

  • RabbitMQ实习面试题
  • Electron入门,项目运行,只需四步轻松搞定。
  • 【C++】visualstudio环境安装
  • 使用MySQL:5.6和owncloud镜像搭建个人网盘
  • php中创建对象时传递的参数是构造方法
  • C++并发及互斥保护示例
  • 新手常犯的错误,anzo capital昂首资本一招避免少走弯路
  • Java Vue (el-date-picker组件) 前后端 关于时间格式数据的处理方法
  • Python爬虫——scrapy_多条管道下载
  • lombok启动不生效(什么方法都试了,可还是不生效怎么办 ?! 救救我)
  • element文本域禁止手动拉伸、两种方式、textarea
  • c#中lambda表达式缩写推演
  • 无涯教程-PHP - 循环语句
  • 思维进化算法(MEA)优化BP神经网络
  • Kotlin 中的 设计模式
  • Vulnhub: ICMP: 1靶机
  • 我的创作纪念日(C++修仙练气期总结)
  • css的常见伪元素使用
  • 91. 解码方法
  • docker搭建opengrok环境2
  • 【校招VIP】java语言考点之ConcurrentHashMap1.7和1.8
  • php如何实现5x+2x+1x=100
  • 机器人项目:从 ROS2 切换到 ROS1 的原因
  • Vault主题 - UiCore多用途Elementor WordPress主题
  • G0第26章:微服务概述与gRPCprotocol buffers
  • 三款远程控制软件对比,5大挑选指标:安全、稳定、易用、兼容、功能
  • Java中static的应用之单例模式
  • TypeError: Cannot read properties of undefined (reading ‘container‘)
  • Vue--BM记事本
  • openpnp - 板子上最小物料封装尺寸的选择