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

余姚网站建设服务武汉百度推广多少钱

余姚网站建设服务,武汉百度推广多少钱,中小企业微信网站建设,做曖免费网站删除字符串两端相同字符后的最短长度 难度:中等 给你一个只包含字符 a,b 和 c 的字符串 s ,你可以执行下面这个操作(5 个步骤)任意次: 选择字符串 s 一个 非空 的前缀,这个前缀的所有字符都相…

删除字符串两端相同字符后的最短长度

难度:中等

给你一个只包含字符 'a''b''c' 的字符串 s ,你可以执行下面这个操作(5 个步骤)任意次:

  • 选择字符串 s 一个 非空 的前缀,这个前缀的所有字符都相同。
  • 选择字符串 s 一个 非空 的后缀,这个后缀的所有字符都相同。
  • 前缀和后缀在字符串中任意位置都不能有交集。
  • 前缀和后缀包含的所有字符都要相同。
  • 同时删除前缀和后缀。

请你返回对字符串 s 执行上面操作任意次以后(可能 0 次),能得到的 最短长度

双指针

思路:

题目要求删除字符串 sss 中字母相同且不相交的前缀与后缀,假设当前字符串的长度为 nnn,则执行的删除规则如下:

  • 选择字符串 sss 一个非空的前缀 prefix=s[0,⋯,l]\textit{prefix} = s[0,\cdots,l]prefix=s[0,,l],这个前缀的所有字符都相同,s[0]=s[1]=⋯=s[l]s[0] = s[1] = \cdots = s[l]s[0]=s[1]==s[l]
  • 选择字符串 sss 一个非空11的后缀 suffix=s[r,⋯,n−1]\textit{suffix} = s[r,\cdots,n-1]suffix=s[r,,n1],这个后缀的所有字符都相同,s[r]=s[r+1]=⋯=s[n−1]s[r] = s[r + 1] = \cdots = s[n-1]s[r]=s[r+1]==s[n1]
  • 前缀和后缀在字符串中任意位置都不能有交集,即 l<rl < rl<r
  • 前缀和后缀包含的所有字符都要相同,s[0]=s[1]=⋯=s[l]=s[r]=s[r+1]=⋯=s[n−1]s[0] = s[1] = \cdots = s[l] = s[r] = s[r + 1] = \cdots = s[n-1]s[0]=s[1]==s[l]=s[r]=s[r+1]==s[n1]
  • 同时删除前缀和后缀。

通过观察我们对 sss 进行分类讨论如下:

  • sss 的长度为 111 时,假设 s=“a"s = \text{``a"}s=“a",此时按照题目的删除规则此时不能删除。
  • sss 的长度大于 111sss 中的所有字符均相同,假设 s=“aaaa"s = \text{``aaaa"}s=“aaaa",此时按照题目的删除规则 sss 一定可以全部删除完。
  • sss 的长度大于 111sss 存在字母相同的前缀与后缀,假设 s=“aaabbbccca"s = \text{``aaabbbccca"}s=“aaabbbccca",此时按照题目的删除规则最优选择是 sss 应当将前缀与后缀中连续的 ‘a’\text{`a’}‘a’ 全部删除完,删除完成后 s′=“bbbccc"s' = \text{``bbbccc"}s=“bbbccc"
  • sss 的长度大于 111sss 不存在字母相同的前缀与后缀,假设 s=“aaaccc"s = \text{``aaaccc"}s=“aaaccc",此时按照删除规则,无法进行删除。

根据以上的删除规则分类,我们设 left\textit{left}leftright\textit{right}right 分别指向当前待删除字符串的起始位置与结束位置,然后按照规则进行删除,当前可以删除的条件必须满足如下:

  • 只有字符串的长度大于 111 时我们才进行删除,因此可以进行删除的条件一定需要满足 left<right\textit{left} < \textit{right}left<right
  • 只有存在字母相同的前缀与后缀我们才进行删除,因此可以进行删除的条件一定需要满足 s[left]=s[right]s[\textit{left}] = s[\textit{right}]s[left]=s[right]

假设有可以进行删除的前缀和后缀时,则我们将所有字母相同的前缀与后缀全部删除,此时 left\textit{left}left 需要向右移动,right\textit{right}right 需要向左移动,并删除字符串中字母相同的前缀与后缀,直到无法删除为止。最终 left\textit{left}left 指向删除后字符串的左起点,right\textit{right}right 指向删除后字符串的右终点,剩余的字符串的长度则为 right−left+1\textit{right} - \textit{left} + 1rightleft+1

需要注意的是,如果当 sss 的长度大于 111sss 中的字符全部相等时,此时需要将 sss 全部进行删除,则会出现 right=left−1\textit{right} = \textit{left} - 1right=left1

复杂度分析:

  • 时间复杂度: O(n)O(n)O(n),其中 nnn 表示字符串的长度。我们只需遍历一遍字符串即可。
  • 空间复杂度: O(1)O(1)O(1)
class Solution:def minimumLength(self, s: str) -> int:l, r = 0, len(s) - 1while r - l >= 1 and s[l] == s[r]:now = s[l]while l <= r and s[l] == now:l += 1while l <= r and s[r] == now:r -= 1return r - l + 1

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/minimum-length-of-string-after-deleting-similar-ends/

http://www.ds6.com.cn/news/121477.html

相关文章:

  • 可以自己做网站的软件网站的推广优化
  • 技术支持:洛阳网站建设百度知道入口
  • 重庆梁平网站建设报价教育机构在线咨询
  • 购物网站策划建设方案短视频营销推广策略
  • 开发高端网站开发公司做网页要多少钱
  • 创可贴网站怎么做图片大全网站seo属于什么专业
  • 东莞网站平面设计销售平台
  • 一个新网站关键词怎么做SEO优化上海网络推广
  • 网站建设 東道网络网页设计与网站建设教程
  • 中企高呈高端网站建设费用免费b2b平台推广
  • 四大商业网站黄冈网站推广
  • 湛江seo网站推广重庆seo整站优化报价
  • 网址大全查询网站app推广怎么联系一手代理
  • 商城网站开发 多少钱seo技术服务外包
  • 东莞整站优化排名企业网络推广的方法有哪些
  • 招聘wordpress网站高手兼职如何做网站推广私人
  • 招聘网站数据分析怎么做友情链接英语
  • 网页与网站之间的关系yandex搜索入口
  • 统一汤达人选择她做汤面活动网站百度排名
  • 顺德区网站设计产品营销
  • 长沙点看网络科技有限公司合肥百度关键词优化
  • 给医院做网站赚钱吗网站seo报价
  • 石家庄新钥匙网站深圳市前十的互联网推广公司
  • dnf源码论坛网站优化网站
  • 做的网站在百度找不到网页制作官方网站
  • 在线客服链接生成器seo优化啥意思
  • 政府机构网站建设流程太原百度推广排名优化
  • 网站建设基础与实践全自动推广引流软件免费
  • 怎么抄别人的wordpress主题关键词的分类和优化
  • 做关于灯饰的网站深圳做网站的公司有哪些