力扣每日一题 5/29

2981.找出出现至少三次的最长特殊子字符串I

题目:

给你一个仅由小写英文字母组成的字符串 s 。

如果一个字符串仅由单一字符组成,那么它被称为 特殊 字符串。例如,字符串 "abc" 不是特殊字符串,而字符串 "ddd""zz" 和 "f" 是特殊字符串。

返回在 s 中出现 至少三次  最长特殊子字符串 的长度,如果不存在出现至少三次的特殊子字符串,则返回 -1 。

子字符串 是字符串中的一个连续 非空 字符序列。

示例 1:

输入:s = "aaaa"
输出:2
解释:出现三次的最长特殊子字符串是 "aa" :子字符串 "aaaa"、"aaaa" 和 "aaaa"。
可以证明最大长度是 2 。

示例 2:

输入:s = "abcdef"
输出:-1
解释:不存在出现至少三次的特殊子字符串。因此返回 -1 。

示例 3:

输入:s = "abcaba"
输出:1
解释:出现三次的最长特殊子字符串是 "a" :子字符串 "abcaba"、"abcaba" 和 "abcaba"。
可以证明最大长度是 1 。

提示:

  • 3 <= s.length <= 50
  • s 仅由小写英文字母组成。

 分析:

        刚开始看了这道题十几分钟没思路,写了又删,删了又写。后来也是看了评论区的题解,整理了以下思路:

"""
1.设字母a的最长特殊子串的长度是L1
那么可以选3个长为 L1-2 的相同的特殊子串2.设字母a的第二长特殊子串的长度是L2
如果 L1=L2.选 3 个长为L1-1的
如果 L1>L2.选 3 个长为L2的
min(L1-1,L2)3.设字母a的第三长特殊子串的长度为L3 
那么可以选3个长为L3的相同的特殊子串max(L1-2,min(L1-1,L2),L3)"""

代码实现:

class Solution:def maximumLength(self, s: str) -> int:groups = defaultdict(list) # hashmap key:char value:listcnt=0for i ,ch in enumerate(s):# ch =s[i]cnt+=1if i==len(s)-1 or ch!=s[i+1]:groups[ch].append(cnt)cnt=0print(groups)ans=0for a in groups.values():a.sort(reverse=True)a.extend([0,0])  # 防止只有一个数 报错l1,l2,l3 = a[:3]  # 新写法ans = max(ans,l1-2,min(l1-1,l2),l3)return ans if ans else -1  # ans大于0 返回ans 否则返回-1
a=Solution()
b=a.maximumLength(s='aaaaba')
print(b)

总结:

 这道题引入了新知识点,defaultdict()模块。

defaultdict()详解:

        defaultdict是collections模块中的一个类,它是一种字典的子类,它允许使用默认值来创建一个字典。当我们访问一个不存在的键时,defaultdict会自动创建这个键,并将其对应的值初始化为一个默认值。

        默认值可以是任何类型,例如int、list、set、dict等。这样当我们需要向一个默认值为空的字典中添加元素时,就不需要担心键是否存在的问题,因为defaultdict会自动帮我们处理这个情况。

        使用defaultdict可以更加简洁和高效地处理一些问题,特别是在需要处理大量数据或者复杂数据结构时。下面是一个使用defaultdict的例子

from collections import defaultdict# 创建一个defaultdict,指定默认值为list
d = defaultdict(list)# 使用defaultdict来向字典中添加元素
d['a'].append(1)
d['b'].append(2)
d['c'].append(3)print(d)  # 输出 defaultdict(<class 'list'>, {'a': [1], 'b': [2], 'c': [3]})

         在上面的例子中,当我们尝试向字典d中的不存在的键添加元素时,defaultdict会自动为这个键初始化一个空列表,并将元素添加到这个列表中。这样就避免了使用普通字典时需要先判断键是否存在的繁琐操作。

        不仅如此,还巧妙的用了extend([]) ,这样有效的防止了只有一个长度的报错情况。很敬佩这种思路。

不断的突破,创新,提高!这正是我所追求的!

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

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

相关文章

Android9禁止某个app启动

禁止某个app通过开机广播自启动&#xff0c;覆盖住Launcher 代码位置 : frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java具体修改如下 public final int startActivityAsUser(IApplicationThread caller, String callingPackage,Inte…

详解 Scala 的运算符

一、Scala运算符的本质 Scala 运算符的本质是对象的方法 object TestOperator {def main(args: Array[String]): Unit {val n1: Int 10val n2: Int 20// 当调用对象的方法时&#xff0c;点. 可以省略val result1: Int n1.(n2)val result2: Int n1 (n2)println(result1)pr…

[Git] 如何在fork仓 从 主仓 更新代码

直接上干货 Step 1 添加主仓库为新的远程仓库&#xff1a;在终端或命令提示符中切换到你的本地仓库目录&#xff0c;然后运行以下命令以添加主仓库作为一个新的远程地址&#xff08;通常命名为upstream&#xff09;&#xff1a; git remote add upstream (主仓库的URL)Step 2 …

ABAP AS文件目录动态创建

项目上需要将附件上传得到ABAP AS的文件系统上&#xff0c;文件需要按照上传日期存放在 YYYY\MM对应的目录下&#xff0c;所以我们需要动态的创建文件夹&#xff0c;以应对不同月份的所需的新文件夹。以下便是使用ABAP在 AS上创建文件夹的code: class ZCL_FILE_SYSTEM_UTIL de…

spring aop 内部引用失效分析

背景 用了spring retry 发现在有些场景下失效&#xff0c;也让我想起了之前看spring 事务时会有一些场景下失效的这个问题 代码 接口public interface UserService {public void start() ;public void stop(); }实现类 Service public class UserServiceImpl implements User…

AI绘画Stable Diffusion XL 可商用模型!写实艺术时尚摄影级真实感大模型推荐(附模型下载)

大家好&#xff0c;我是设计师阿威 大家在使用AI绘画的时候&#xff0c;是不是遇到这种问题&#xff1a;收藏的模型确实很多&#xff0c;可商用的没几个&#xff0c;而今天阿威将给大家带来的这款写实艺术时尚摄影级真实感大模型-墨幽人造人XL&#xff0c; 对于个人来讲完全是…

Springboot事务控制中A方法调用B方法@Transactional生效与不生效情况实战总结

介绍 本篇对Springboot事务控制中A方法调用B方法Transactional生效与不生效情况进行实战总结&#xff0c;让容易忘记或者困扰初学者甚至老鸟的开发者&#xff0c;只需要看这一篇文章即可立马找到解决方案&#xff0c;这就是干货的价值。喜欢的朋友别忘记来个一键三连哈&#x…

【wiki知识库】03.前后端的初步交互(展现所有的电子书)

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 目录 一、&#x1f525;今日目标 二、&#x1f4c2;前端配置文件补充 三、&#x1f30f;前端Vue的改造 四、&#x1f4a1;总结 一、&#x1f525;今日目标 在上一篇文章当中&#xff0c;我已带大家把后端的一些基本工…

【算法】重建二叉树并进行后序遍历的Java实现

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

服务器主机托管一站式托管服务有哪些?

服务器主机托管一站式托管服务&#xff0c;作为现代企业信息化建设的重要一环&#xff0c;为企业提供了一种高效、安全、可靠的服务器运行环境。下面&#xff0c;我们将从多个方面详细介绍这一服务的内容。 一、硬件与基础设施 服务器主机托管服务首先涵盖了服务器硬件和网络基…

Java 18 新特性详解:提升开发效率与性能

Java 18 新特性详解 Java 18 是 Oracle 于 2022 年发布的最新版本,带来了许多新的特性和改进。本文将深入探讨 Java 18 的主要新特性及其应用场景,帮助开发者更好地理解和利用这些新功能。 1. 简单的 Web 服务器 Java 18 引入了一个简单的 HTTP 文件服务器,旨在为开发和测…

论文解读之A General-Purpose Self-Supervised Model for Computational Pathology

一、前言 目前&#xff0c;有很多无知者认为计算机在疾病诊断上超过了人类&#xff0c;他们的理解是计算机在美丽国的某个什么医师测评上得分超过了人类。这比较可笑和无知。 笔者认为&#xff1a;病理图像的病症复杂、种类繁多&#xff0c;同时数据集很少并且标注极为困难。…

【JavaEE进阶】——Spring Web MVC (响应)

目录 &#x1f6a9;学习Spring MVC &#x1f388;返回静态网页 &#x1f388;返回数据ResponseBody &#x1f388;返回html代码片段 &#x1f388;返回JSON &#x1f388;设置状态码 &#x1f388;设置Header &#x1f6a9;学习Spring MVC 既然是 Web 框架, 那么当⽤⼾在…

剪画小程序:自媒体创作的第一步:如何将视频中的文案提取出来?

自媒体创作第一步&#xff0c;文案提取无疑是至关重要的一环。 做自媒体之所以要进行文案提取&#xff0c;有以下重要原因&#xff1a; 首先&#xff0c;提高效率。通过文案提取&#xff0c;可以快速获取关键信息&#xff0c;避免在无关紧要的内容上浪费时间&#xff0c;从而…

Flutter 中的 YearPicker 小部件:全面指南

Flutter 中的 YearPicker 小部件&#xff1a;全面指南 在 Flutter 应用开发中&#xff0c;为用户提供日期和时间选择功能是常见的需求。YearPicker 是一个允许用户选择年份的小部件&#xff0c;它通常用于实现日期选择器或表单中年份字段的输入。虽然 Flutter 的标准库中没有直…

YOLOV10阅读总结

GitHub - THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection YOLOv10 - Ultralytics YOLO Docs https://arxiv.org/pdf/2405.14458 论文地址 最近yolo又出了个yolov10了&#xff0c;不得不感慨CV是真卷&#xff0c;毕竟yolov9也才没多久。记录一下阅读笔记。…

第一站挺进巴中,茅仙酒带来“1+1”模式新玩法

执笔 | 尼 奥 编辑 | 扬 灵 今年春糖期间&#xff0c;以“盛世华章何以鉴 酱酒经典品茅仙”为主题的茅仙酒新品发布会给白酒行业留下深刻印象。这瓶传承历史、恪守匠心、创美奋进的佳酿在“茅台家族、集团出品”的品牌加持下&#xff0c;开启了全国化征程的新步伐。 近日&…

突破空间限制,这些远程控制软件为父母送上“手把手”的教导,解决异地办公难题,出差无忧

在现代社会&#xff0c;科技的飞速发展带来了诸多便利&#xff0c;但同时也给一些年长的父母们带来了困扰。 当父母们面对智能手机电脑等高科技产品时&#xff0c;他们往往感到无所适从&#xff0c;而子女们忙于工作、学习或其他原因&#xff0c;常常无法时刻陪伴在父母身边&a…

Qt6 QSslSocket 客户端设计踩坑

QSslSocket 默认自动搜索代理设置&#xff0c;当系统中存在代理时&#xff0c;执行 connectToHostEncrypted 会导致 socket error: UnsupportedSocketOperationError&#xff0c;具体错误是 connect error is "The proxy type is invalid for this operation"&#…

门限签名技术

私钥永远不存在 (t, n) 门限签名方案 (TSS) 是一种密码协议&#xff0c;允许一组 n 个参与者共同签署文档或交易&#xff0c;其中 t 1 个或更多参与者的任何子集都可以产生有效签名&#xff0c;但 t 的子集 或更少的人不能。 该方案旨在通过确保没有任何一方可以单方面生成签名…