当前位置: 首页 > 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.dtcms.com/a/299273.html

相关文章:

  • JVM参数
  • 7月26日京东秋招第一场第二题
  • sssss
  • python面向对象编程详解
  • 机器学习的工作流程
  • JVM-GC 相关知识
  • 配置DNS正反向解析
  • 深度学习(鱼书)day03--神经网络(后两节)
  • 【教程】无需迁移IDE!Augment原生插件实现Cursor无缝平替 Claude-4无限用
  • ClickHouse高性能实时分析数据库-消费实时数据流(消费kafka)
  • Flutter开发实战之路由与导航
  • Redis面试精讲 Day 5:Redis内存管理与过期策略
  • HTTP 协议的基本格式和 fiddler 的用法
  • 15.6 DeepSpeed+Transformers实战:LLaMA-7B训练效率提升210%,显存直降73%
  • Spring Boot 项目启动自动执行逻辑的最佳实践:掌握 CommandLineRunner
  • Windows11下和Vmware中的Ubuntu22.04设置samba服务遇到的一个问题- valid users和guest设置冲突
  • 【架构师从入门到进阶】第五章:DNSCDN网关优化思路——第十节:网关安全-单向加密
  • k8s之控制器详解
  • 什么是Paimon?Paimon是什么?
  • 兼容性问题记录
  • 速通python加密之RSA加密
  • 刷题日记0726
  • AI使能的SVD算子:基于深度学习的矩阵分解方法
  • 个人电脑配置IPv6的详细步骤
  • 【线段树】P8473 [Aya Round 1 H] 破碎的历史|普及+
  • TypeScript compilerOptions 深入全面讲解
  • 20250726-4-Kubernetes 网络-Service DNS名称解析_笔记
  • OCR工具集下载与保姆级安装教程!!
  • DSP在CCS中实现双核在线仿真调试及下载的方法(以TMS320F28x为例)
  • iOS 26,双版本更新来了