[LeetCode 1781]所有子字符串美丽值之和

news2024/11/17 5:29:40

题目描述

题目链接:所有子字符串美丽值之和

一个字符串的 美丽值 定义为:出现频率最高字符与出现频率最低字符的出现次数之差。

比方说,“abaacc” 的美丽值为 3 - 1 = 2 。
给你一个字符串 s ,请你返回它所有子字符串的 美丽值 之和。

示例1

输入:s = “aabcb”
输出:5
解释:美丽值不为零的字符串包括 [“aab”,“aabc”,“aabcb”,“abcb”,“bcb”] ,每一个字符串的美丽值都为 1 。

示例2

输入:s = “aabcbaa”
输出:17

提示:

  • 1 <= s.length <= 500
  • s 只包含小写英文字母。

思路分析

前缀和
要想快速得到某个区间内某个字母出现的次数,使用前缀和可以在O(1)的时间内得到结果

由于有26个英文字母,所以我们开26个一维数组,每个一维数组存放对应字母的前缀和

以aabcb举例,首先是a,所以cnt[0][1]++,其余的cnt不变
在这里插入图片描述

同样s[2] = a,所以,cnt[0][2]++,其余不变
在这里插入图片描述

以此类推,最后得到的结果是
在这里插入图片描述

例如要求s[2~4] = abc
那么其中含有a的个数为cnt[0][4] - cnt[0][1] = 1
那么其中含有b的个数为cnt[1][4] - cnt[1][1] = 1
那么其中含有c的个数为cnt[2][4] - cnt[2][1] = 1

所以可以在常数时间内求出每一段子字符串中每个字母的个数

代码

int cnt[26][510];

class Solution {
public:
    int beautySum(string s) {
    	//一定要初始化,即使cnt放在class以外,其内部的值也是未经过初始化的
        memset(cnt, 0, sizeof cnt);
        //要计算前缀和,所以在s前加一个空格,不用进行下标转换
        s = ' ' + s;
		//计算前缀和数组
        for(int i = 1; i < s.size(); i++) {
            for(int j = 0; j < 26; j++) {
                cnt[j][i] += cnt[j][i - 1];
            }
            cnt[s[i] - 'a'][i]++;
        }

        int res = 0;
        //长度从3开始计算,长度为1和2都没有意义(不信你举个例子)
        for(int k = 3; k < s.size(); k++) {
            for(int i = 1; i + k - 1 < s.size(); i++) {
                int maxn = -1, minn = 1e9;
                for(int j = 0; j < 26; j++) {
                    int t = cnt[j][i + k - 1] - cnt[j][i - 1];
                    //如果这个区间内没有该字母,跳过!
                    if(!t) continue;
                    if(t > maxn) maxn = t;
                    if(t < minn) minn = t;
                }
                res += maxn - minn;
            }
        }
        return res;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/82967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序框架(五)-全面详解(学习总结---从入门到深化)

目录 UI框架_TDesign 引入TDesign UI框架_TDesign组件 Rate 评分 Toast 轻提示 UI框架_Vant 使用方式 引入组件 UI框架_Vant组件 Overlay 遮罩层 Grid 宫格 Card 商品卡片 UI框架_TDesign TDesign 企业级设计体系&#xff08;前端UI组件库&#xff09; 地址&#xff1a;…

影响项目进度的因素有哪些?如何跟踪项目计划?

影响项目进度的因素&#xff1a; 1、项目经理能力不足 一名优秀的项目经理&#xff0c;要对制定项目计划、安全、质量、成本管理等各项工作都熟悉&#xff0c;也要能管理好项目团队。 如果无法有效管理团队、没有完全掌握项目管理方法等都是项目经理能力不足的表现&#xff…

跳槽一次能涨多少?今天见识到跳槽天花板。

2022年马上就快结束了&#xff0c;最近内卷严重&#xff0c;各种跳槽裁员&#xff0c;相信很多小伙伴也在准备明年的金三银四的面试计划。 在此分享一套学习笔记 / 面试手册&#xff0c;年后跳槽的朋友可以好好刷一刷&#xff0c;还是挺有必要的&#xff0c;它几乎涵盖了所有的…

软件测试必须要加班吗?

我在面试时一般会问面试官&#xff1a;“公司每次迭代周期多久&#xff1f;加班多么&#xff1f;”这个问题一般都是看这家公司的上班节奏怎么样&#xff0c;加班多不多&#xff0c;自己能不能扛住加班的压力。一般来说&#xff0c;刚进公司&#xff0c;需要对环境、业务、代码…

10:30面试,10:31就出来了 ,问的实在是太...

从外包出来&#xff0c;没想到算法死在另一家厂子 自从加入这家公司&#xff0c;每天都在加班&#xff0c;钱倒是给的不少&#xff0c;所以也就忍了。没想到8月一纸通知&#xff0c;所有人不许加班&#xff0c;薪资直降30%&#xff0c;顿时有吃不起饭的赶脚。 好在有个兄弟内推…

CMake中target_include_directories的使用

CMake中target_include_directories命令用于向target中添加包含目录,其格式如下: target_include_directories(<target> [SYSTEM] [AFTER|BEFORE]<INTERFACE|PUBLIC|PRIVATE> [items1...][<INTERFACE|PUBLIC|PRIVATE> [items2...] ...]) 指定在编译给定targ…

MySQL 事务特性和事务隔离级别

1. MySQL 事务的四大特性 2. MySQL 事务的并发问题 3. MySQL 事务的隔离级别 --------------------------------------------------------- 1. MySQL 事务的四大特性 MySQL 事务具有四个特性&#xff1a;原子性、一致性、隔离性、持久性&#xff0c;这四个特性简称 ACID 特性…

写文章常用的几款软件

编写文章Typora Typora网址 就是一款非常优秀的桌面端笔记本软件, 支持实时预览的 Markdown 文本编辑器. 支持导出HTML, PDF, Word等格式 画图excalidraw excalidraw在线网址 一个开源免费的画图软件 目前看到的最舒服的画图软件, 拥有丰富的图库, 好看的风格 录制GIF的LICEc…

Go开发中如何进行自定义Response.go封装实现

自定义Respone好处 在写接口的时候&#xff0c;我们通过都需要将前端小伙伴发给我们的请求进行校验和返回数据&#xff0c;如果是正确的请求参数&#xff0c;那么也符合我们的校验&#xff0c;则需要返回数据给他们&#xff0c;并且给予提示&#xff1b;反之&#xff0c;如果请…

不知道WPS转PPT怎么转换?来看看我自用的两种方法就知道了

wps转ppt怎么转换 &#xff08;百&#xff09;wps转ppt怎么转换&#xff1f;分享这几种转换方法 &#xff08;搜&#xff09;WPS怎么转PPT&#xff1f;今天教你学会WPS转PPT &#xff08;企&#xff09;WPS如何转PPT&#xff1f;WPS转PPT转换方法分享 &#xff08;网&#xff…

Datax

1、Datax简要描述 DataX 是阿里云 DataWorks数据集成 的开源版本&#xff0c;在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、…

ADI Blackfin DSP处理器-BF533的开发详解39:图像处理专题-图像灰度均衡处理(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了图像灰度均衡&#xff0c;代码运行时&#xff0c;会通过文件系统打开工程文件根目下" …/ImageView"路径中的 tes…

ADI Blackfin DSP处理器-BF533的开发详解37:图像处理专题-YUV420 转 RGB565(含源代码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了将 YUV420 数据格式转为 RGB565 格式。YUV420 的数据格式必须是两度和色度分离的。 板卡液晶屏和 VDSP 软件商 Image Viewe…

【小甲鱼C语言】课后笔记第一章第三节——常量和宏定义

目录 1、常见的常量 2、宏定义&#xff08;符号常量&#xff09; 3、标识符 4、字符串常量 5、课后习题&#xff08;编程题&#xff09; 1、常见的常量 整型常量&#xff1a;520, 1314, 123 实型常量&#xff1a;3.14, 5.12, 8.97 字符常量 普通字符&#xff1a;L, o, v,…

基于短期的风力发电概率预测(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清…

Stm32旧版库函数5——ov2640通过nrf24l01发送图像

视频采集端&#xff1a; /******************************************************************************* // // 使用单片机STM32F100C8T6 8 // 晶振&#xff1a;8.00M // 编译环境 Keil uVision4 // 在3.3V的供电环境下&#xff0c;就能运行 // 波特率 115200 // 使…

PyTorch(六)网络模型

文章目录Log一、现有网络模型的使用及修改1. VGG① ImageNet 数据集下载② 模型加载③ 模型改造a. 添加一个线性层b. 插入一个线性层c. 修改一个线性层二、网络模型的保存与读取① 网络模型的保存a. 保存方式一b. 保存方式二② 网络模型的读取a. 读取方式一b. 读取方式二三、完…

微信公众号服务号配置对接在线客服系统教程

如果只需要实现微信公众号的关注自动回复&#xff0c;关键词自动回复功能&#xff0c;普通订阅号就可以 当需要对接实现公众号的模板消息提醒&#xff0c;模板消息与客服端H5的对接&#xff0c;访客在微信点击或扫码时获取到微信的昵称头像&#xff0c;需要网页授权功能。这种是…

Spring(一):Spring核心与设计思想(IoC、DI)

目录一、Spring是什么1.1 容器是什么&#xff1f;1.2 什么是IoC&#xff1f;1.3 理解Spring IoC1.4 DI是什么一、Spring是什么 我们这里所说的Spring指的是SpringFrameWork&#xff0c;是一个开源框架。Spring支持广泛的应用场景&#xff0c;它可以让Java企业级的应用程序开发…

k8s编程operator实战之云编码平台——②controller初步实现

文章目录1、工作空间镜像制作2、controller实现2.1 使用kubebuilder创建工程2.2 代码实现2.2.1 引入grpc2.2.2 实现CloudIdeServiceStatusInformer的实现CloudSpaceService定义方法CreateSpaceAndWaitForRunning方法GetPodSpaceInfo方法DeleteSpace方法GetPodSpaceStatus2.2.3 …