2716. 最小化字符串长度

2023-09-21 15:52:10

2716. 最小化字符串长度

给你一个下标从 0 开始的字符串 s ,重复执行下述操作 任意 次:

在字符串中选出一个下标 i ,并使 c 为字符串下标 i 处的字符。并在 i 左侧(如果有)和 右侧(如果有)各 删除 一个距离 i 最近 的字符 c 。

请你通过执行上述操作任意次,使 s 的长度 最小化 。

返回一个表示 最小化 字符串的长度的整数。

示例 1:

输入:s = “aaabc”
输出:3
解释:在这个示例中,s 等于 “aaabc” 。我们可以选择位于下标 1 处的字符 ‘a’ 开始。接着删除下标 1 左侧最近的那个 ‘a’(位于下标 0)以及下标 1 右侧最近的那个 ‘a’(位于下标 2)。执行操作后,字符串变为 “abc” 。继续对字符串执行任何操作都不会改变其长度。因此,最小化字符串的长度是 3 。

示例 2:

输入:s = “cbbd”
输出:3
解释:我们可以选择位于下标 1 处的字符 ‘b’ 开始。下标 1 左侧不存在字符 ‘b’ ,但右侧存在一个字符 ‘b’(位于下标 2),所以会删除位于下标 2 的字符 ‘b’ 。执行操作后,字符串变为 “cbd” 。继续对字符串执行任何操作都不会改变其长度。因此,最小化字符串的长度是 3 。

示例 3:

输入:s = “dddaaa”
输出:2
解释:我们可以选择位于下标 1 处的字符 ‘d’ 开始。接着删除下标 1 左侧最近的那个 ‘d’(位于下标 0)以及下标 1 右侧最近的那个 ‘d’(位于下标 2)。执行操作后,字符串变为 “daaa” 。继续对新字符串执行操作,可以选择位于下标 2 的字符 ‘a’ 。接着删除下标 2 左侧最近的那个 ‘a’(位于下标 1)以及下标 2 右侧最近的那个 ‘a’(位于下标 3)。执行操作后,字符串变为 “da” 。继续对字符串执行任何操作都不会改变其长度。因此,最小化字符串的长度是 2 。

解题代码如下:

int minimizedStringLength(char * s){
    int count[26];
    for(int i=0;i<26;i++){
        count[i]=0;
    }
    for(int i=0;s[i]!='\0';i++){
        count[s[i]-'a']=count[s[i]-'a']+1;
    }
    int re=0;
     for(int i=0;i<26;i++){
      if(count[i]!=0){
          re++;
      }
    }
    return re;

}
更多推荐

C/C++内存管理相关知识点

1.内存分布C/C++将内存大体上分为四个区域:栈区、堆区、静态区(数据段)、常量区(代码段)。栈区:用来存储函数调用时的临时信息的结构,存放为运行时函数分配的局部变量、函数参数、返回数据、返回地址等。堆区:程序员自己使用malloc或new自己申请出来存的地方。(动态内存分配)静态区:static修饰的数据,全局数据

“新KG”视点 | 漆桂林——知识图谱和大语言模型的共存之道

OpenKG大模型专辑导读知识图谱和大型语言模型都是用来表示和处理知识的手段。大模型补足了理解语言的能力,知识图谱则丰富了表示知识的方式,两者的深度结合必将为人工智能提供更为全面、可靠、可控的知识处理方法。在这一背景下,OpenKG组织新KG视点系列文章——“大模型专辑”,不定期邀请业内专家对知识图谱与大模型的融合之道

企业电子招标采购系统源码之从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理

功能描述1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批,查看所有的立项信息。主要功能包含:招标立项申请、非招标立项申请、采购立项管理。3、采购项目管理:可对项目采购过程全流程管

软件项目开发的流程及关键点

软件项目开发的流程及关键点graphLRA[需求分析]-->B[系统设计]B-->C[编码开发]C-->D[测试验证]D-->E[部署上线]E-->F[运维支持]在项目开发的流程中,首先是进行需求分析,明确项目的目标和功能要求。接下来是系统设计,制定项目的整体架构和具体实现方案。然后进行编码开发,根据设计方案进行编码实

K-means 聚类算法学习笔记

K-means聚类算法是一种无监督学习算法,用来将nnn个样本点分成kkk类,使得整个数据集的误差平方和SSESSESSE最小。在本例中,样本点是指平面直角坐标系上的点,聚类中心也是平面直角坐标系上的点,而每个点的损失函数则是它到聚类中心的距离。即:找出2个点,使得所有点到这2个点的距离的更小者之和最小。K-means

Vue的详细教程--用Vue-cli搭建SPA项目

🥳🥳WelcomeHuihui'sCodeWorld!!🥳🥳接下来看看由辉辉所写的关于Vue的相关操作吧目录🥳🥳WelcomeHuihui'sCodeWorld!!🥳🥳一.Vue-cli是什么二.安装vue-cli①npminstall-gvue-cli②npminstallwebpack-g三.什么是

Ruoyi-vue项目讲解

@[TOC]若依前后端调用接口解读若依github官方下载地址若依gitee官方下载地址1.验证码时候的前端调用接口调用前端登录界面的时候,调用的是login.vue这个文件中的created函数这里我们查看getCode函数方法可以看到,这里先调用了一个getCodeImg函数,然后接收到后端返回的值之后,再进行相应

Python阴阳历日期转换

阳历转阴(殷)历,阴历转阳历,了解一下阴阳历的转换逻辑、闰月的转换。农历,古时称为夏历,是中国现行的传统历法,属于阴历和阳历的合历,根据月相的变化周期一个月,参考太阳回归年为一年的长度,加入二十四节气与设置闫月平均历年与回归年相适应。--百度百科1.阴阳历偏差计算表参考以下所使用python库中定义的1900~2100

Linux:冯诺依曼系统和操作系统的概念

文章目录冯诺依曼体系结构冯诺依曼体系的理解操作系统操作系统的基本定位操作系统的理解1操作系统的理解2总结本篇主要总结的是操作系统的基本认知和一些概念冯诺依曼体系结构那么上图表示的就是冯诺依曼体系结构,那这个体系结构是什么?为什么要先介绍它?截止目前来说,常见的计算机都是遵循着冯诺依曼体系组成的,可以说有了冯诺依曼体系才

Vue中的表单自动完成与下拉选择器

Vue中的表单自动完成与下拉选择器在现代Web应用程序中,表单是不可或缺的一部分,而表单元素的自动完成和下拉选择器是提高用户体验和数据输入效率的重要工具。Vue.js作为一种流行的前端框架,提供了丰富的工具和组件来实现这些功能。在本文中,我们将探讨如何在Vue中实现表单自动完成和下拉选择器,并提供相应的代码示例。表单自

Python协程(asyncio)(一)协程开发

协程的概念协程是python个中另外一种实现多任务的方式,只不过比线程更小占用更小执行单元(理解为需要的资源)。为啥说它是一个执行单元,因为它自带CPU上下文。这样只要在合适的时机,我们可以把一个协程切换到另一个协程。只要这个过程中保存或恢复CPU上下文那么程序还是可以运行的。通俗的理解:在一个线程中的某个函数,可以在

热文推荐