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

LeetCode——1717. 删除子字符串的最大得分

通过万岁!!!

  • 题目:给你一个字符串和两个分数x、y,其中x表示删除“ab”的得分,y表示删除“ba”的得分。然后让你看下最后的最大得分是多少。
  • 思路:最开始我也没太有思路,想到了贪心。但是没太想好怎么处理。后面看了下Related Topics,有贪心和栈,坚定了我的思路。这个其实就是两次括号匹配,匹配上了就有得分,然后加上贪心。首先就是要看ab还是ba的分数大。下面的都按照ab大,那我们优先处理ab。我们每次都往栈中添加元素,如果栈顶元素为a,并且下一个元素是b,则a出栈,处理分数即可,这样就把ab处理完了。然后栈内部元素就是剩下的了。同样的道理处理下ba就好了。但是这个方案最后的效果不太好。我最开始一直考虑ab用了以后,会不会影响ba,会不会其他的替换规则会更好。然后写了几个例子,发现没啥影响的,因为他们两个是相反的。
  • 技巧:贪心、栈

java代码

class Solution {public int maximumGain(String s, int x, int y) {if (x > y) {return handle(s, 'a', 'b', x, y);} else {return handle(s, 'b', 'a', y, x);}}public int handle(String s, char first, char second, int max, int min) {int ret = 0;Stack<Character> stack = new Stack<>();StringBuilder sb = new StringBuilder();for (int i = 0; i < s.length(); i++) {// 先处理大的组合if (!stack.isEmpty() && first == stack.peek() && second == s.charAt(i)) {stack.pop();ret += max;} else {stack.push(s.charAt(i));}}while (!stack.isEmpty()) {sb.append(stack.pop());}sb = sb.reverse();for (int i = 0; i < sb.length(); i++) {// 再处理小的组合if (!stack.isEmpty() && second == stack.peek() && first == sb.charAt(i)) {stack.pop();ret += min;} else {stack.push(sb.charAt(i));}}return ret;}
}
  • 总结:题目还是挺有意思的,首先就是要将ab和ba统一起来,也就是maximumGain中的处理。还有就是,注意这里的reverse,因为我们通过栈中拿到的元素是反了的。时间复杂度和空间复杂度不太好,先通过万岁吧。
http://www.lryc.cn/news/600801.html

相关文章:

  • 秋招Day20 - 微服务 - 概念
  • 【机器学习深度学习】模型微调:多久才算微调完成?——如何判断微调收敛,何时终止训练
  • 二维数组相关学习
  • 大模型蒸馏(distillation)---从DeepseekR1-1.5B到Qwen-2.5-1.5B蒸馏
  • UniappDay03
  • 【Canvas与旗帜】条纹版大明三辰旗
  • AI是否会终结IT职业?深度剖析IT行业的“涌现”与重构
  • 慧星云新增大模型服务:多款大模型轻松调用
  • C++:STL中vector的使用和模拟实现
  • MySQL的底层原理--InnoDB数据页结构
  • 人大金仓 kingbase 连接数太多, 清理数据库连接数
  • 基于匿名管道的多进程任务池实现与FD泄漏解决方案
  • VUE2 学习笔记7 v-model、过滤器
  • 6.数组和字符串
  • ChatIm项目文件上传与获取
  • 拉普拉斯方程的径向解法
  • opencv学习(图像金字塔)
  • DriverManager在rt.jar里,凭什么能加载到classpath下的驱动?
  • Vue当中背景图无法占满屏幕的解决方法
  • 记一次腾讯云临时密钥接管存储桶
  • 零基础 “入坑” Java--- 十四、【练习】图书小系统
  • mrpc框架项目的AI总结
  • 热传导问题Matlab有限元编程 :工业级热仿真核心技术-搭建热传导求解器【含案例源码】
  • 【ELasticsearch】节点角色分类与作用解析
  • ubuntu下docker安装thingsboard物联网平台详细记录(附每张图)
  • 考研复习-数据结构-第八章-排序
  • 求hom_math_2d的角度值
  • URL与URI:互联网世界的“门牌号“与“身份证“
  • DocC的简单使用
  • ICMP报文工作原理