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

(nice!!!)(LeetCode 每日一题) 1717. 删除子字符串的最大得分 (贪心)

题目:1717. 删除子字符串的最大得分

在这里插入图片描述

思路:贪心,时间复杂度0(n)。

非a/b的字符,都可视为分隔符,将字符串s分割为多个只有ab的子串。然后在子串里,优先满足ab的情况(假设ab的分>ba的分),细节看注释。

C++版本:

class Solution {
public:int maximumGain(string s, int x, int y) {// 优先处理分数大的情况,char a='a',b='b';if(x<y){swap(a,b);swap(x,y);}// sum是答案// cta是当前子串里a字符的数量,ctb是当前子串里b字符的数量int sum=0,cta=0,ctb=0;for(auto c:s){// 优先判断ab的情况,所以遇到a字符时,cta++if(c==a){cta++;}else if(c==b){//遇到b字符时,判断前面是否有aif(cta>0){cta--;sum+=x;}else{//无a就记录b字符的数量,用于后面ba的情况ctb++;}}else{//遇到非a、b的字符,那么这一段子串处理就结束了// ab的情况,前面都已经处理了,这里再处理ba的情况sum+=y*min(cta,ctb);cta=0;ctb=0;}}// 处理边界情况sum+=y*min(cta,ctb);return sum;}
};

JAVA版本:

class Solution {public int maximumGain(String s, int x, int y) {char a='a',b='b';if(x<y){char t=a;a=b;b=t;int c=x;x=y;y=c;}int sum=0,cta=0,ctb=0;for(var c:s.toCharArray()){if(c==a){cta++;}else if(c==b){if(cta>0){cta--;sum+=x;}else{ctb++;}}else{sum+=Math.min(cta,ctb)*y;cta=0;ctb=0;}}sum+=Math.min(cta,ctb)*y;return sum;}
}

GO版本:

func maximumGain(s string, x int, y int) int {a,b:='a','b'if x<y {x,y=y,xa,b=b,a}sum,cta,ctb:=0,0,0for _,c:=range s {if c==a {cta++}else if c==b {if cta>0 {cta--sum+=x}else {ctb++}}else{sum+=min(cta,ctb)*ycta=0ctb=0}}sum+=min(cta,ctb)*yreturn sum
}

文章转载自:
http://gamblesome .kjawz.cn
http://polypropylene .kjawz.cn
http://jaggies .kjawz.cn
http://katydid .kjawz.cn
http://horizonless .kjawz.cn
http://prorupt .kjawz.cn
http://hierodule .kjawz.cn
http://subhepatic .kjawz.cn
http://impeccable .kjawz.cn
http://gunnera .kjawz.cn
http://tylopod .kjawz.cn
http://philosopher .kjawz.cn
http://poppycock .kjawz.cn
http://ample .kjawz.cn
http://incrassated .kjawz.cn
http://zante .kjawz.cn
http://naled .kjawz.cn
http://slue .kjawz.cn
http://defeminize .kjawz.cn
http://vellicate .kjawz.cn
http://superloo .kjawz.cn
http://ionic .kjawz.cn
http://platitudinous .kjawz.cn
http://gayest .kjawz.cn
http://triphenylamine .kjawz.cn
http://menservants .kjawz.cn
http://consistorial .kjawz.cn
http://logo .kjawz.cn
http://zamboanga .kjawz.cn
http://bulbospongiosus .kjawz.cn
http://www.dtcms.com/a/293947.html

相关文章:

  • 昨天去看了电科金仓的发布会,有点东西!
  • AI营销核心技术解析:运作机制与行业应用实例
  • 【软件系统架构】系列七:嵌入式系统性能深入解析
  • 华为云中,列表中的镜像无法删除可能由多种原因导致
  • 华为云开发者空间 × DeepSeek-R1 智能融合测评:云端开发与AI客服的协同进化
  • WPF的一些基础知识学习记录
  • 设计模式 八:原型模式 (Prototype Pattern)
  • Spring Boot全局异常处理:一网打尽Controller层异常,@RestControllerAdvice解析
  • 设计模式(单例)
  • 界面组件DevExpress WPF中文教程:Grid - 如何过滤节点?
  • Linux下SVN常用指令
  • 设计模式代码总结
  • Android MediaCodec 的使用和源码实现分析
  • 路由器与交换机的区别
  • 从入门到精通:Windows右键菜单管理全解析
  • 为什么 Linux 启动后还能升级内核?
  • Jmeter的函数助手使用
  • 基于Dapr Sidecar的微服务通信框架设计与性能优化实践
  • 【软件系统架构】系列七:物联网云平台系统性能深入解析
  • HTTP性能优化终极指南:从协议原理到企业级实践
  • 视频、音频录制
  • 操作系统:系统调用的分类(Types of System Calls)
  • C++ 扫描局域网某个端口是否开放(如 5555 )(android adb) 线程并发加速
  • 3d移动translate3d
  • 秋招Day17 - Spring - Spring Boot
  • 【图像处理基石】如何实现一个车辆检测算法?
  • Nginx和Apache的区别
  • 多维任务筛选工具功能解析:如何通过智能筛选功能精准对接任务需求?
  • There are 2 missing blocks. The following files may be corrupted
  • 亚马逊AI新项目Starfish:重构电商Listing生态的机遇与挑战