4.7重复的子字符串(LC_459-E)

news2024/11/17 17:52:41

给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。

示例 1:

输入: s = "abab"
输出: true
解释: 可由子串 "ab" 重复两次构成。

示例 2:

输入: s = "aba"
输出: false

示例 3:

输入: s = "abcabcabcabc"
输出: true
解释: 可由子串 "abc" 重复四次构成。 (或子串 "abcabc" 重复两次构成。)

所以判断字符串s是否由重复子串组成,只要两个s拼接在一起,里面还出现一个s的话,就说明是由重复子串组成。

当然,我们在判断 s + s 拼接的字符串里是否出现一个s的的时候,要刨除 s + s 的首字符和尾字符,这样避免在s+s中搜索出原来的s,我们要搜索的是中间拼接出来的s。

举个例子来说明为什么去掉首尾字符后能够有效检测重复子串:

  • 设 s = "abab"

    • (s + s) = "abababab"
    • 去掉首尾字符得到 "bababa"
    • 在 "bababa" 中我们可以找到 "abab",这说明 s 是由子串 "ab" 重复两次构成的。
  • 设 s = "aba"

    • (s + s) = "abaaba"
    • 去掉首尾字符得到 "baab"
    • "aba" 并不在 "baab" 中,说明 s 不是由某个子串重复构成的。

正确代码:

class Solution(object):
    def repeatedSubstringPattern(self, s):
        """
        :type s: str
        :rtype: bool
        """
        return True if s in (s+s)[1:-1] else False

1. 字符串拼接 s + s

  • s + s 是将字符串 s 与自身拼接,生成一个新的字符串。
  • 例如,假设 s = "abc",那么 s + s 就是 "abcabc"

2. 字符串切片 [1:-1]

  • 切片语法 [start:end] 用于从一个字符串中提取部分内容,其中 start 是起始索引,end 是结束索引。

    • start 是从哪里开始切,索引从0开始。
    • end 是在哪里结束切片,但不包括 end 索引对应的字符。
  • 如果 start 或 end 是负数,Python 则从字符串的末尾倒数进行索引:

    • -1 表示最后一个字符,-2 表示倒数第二个字符,以此类推。
  • [1:-1] 表示从索引 1 开始,一直到倒数第二个字符为止(不包括最后一个字符)的所有字符:

    • 对于 s = "abcabc"s[1:-1] 就是 "bcab"

时间空间复杂度

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

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

相关文章

无线终端ZWS云应用(一)—1分钟快速接入CATCOM-100 DTU上云

环境监测设备(如温湿度传感器)可以通过DTU终端CATCOM-100接入ZWS云平台,实现远程监控和管理。 准备工作 准备一个温湿度传感器和一个致远电子的DTU终端CATCOM-100。准备一张SIM卡,用于4G联网。 操作步骤 1. 云平台设备创建 1.1 …

PCIe563XD系列多功能异步数据采集卡64路AD信号采集500K采样频率

阿尔泰科技 型号:PCIe5630D/5631D/5632D/5633Dhttps://item.taobao.com/item.htm?spma1z10.3-c-s.w4002-265216876.12.84513350msbilC&id589158158140&piskf6qstfsYFCA6dK09z-BERdlfDjobG5szWKMYE-KwHcntcqeoOlla3juYGWce0OmNomNjOScZ7chwcmwbiSuY0jrXIkN…

nodejs发送邮件给多个收件人如何实现群发?

node.js发送邮件的方法?如何用nodejs自动发送邮件? Node.js发送邮件是一种高效而灵活的解决方案,尤其是在需要群发邮件时。AokSend将探讨如何使用Node.js发送邮件给多个收件人,帮您实现邮件的批量发送。 nodejs发送邮件&#xf…

2024年3款精选工具+谷歌翻译:发现那些你不知道的高级功能!

现在这世界变得越来越像一个村了,语言不应该是我们聊天的绊脚石。但是在工作的时候,碰到不同语言的文件、邮件和会议,翻译还是挺考验人的。好在有谷歌翻译这个牛气的工具,还有其他几个好用的软件帮忙,让我们在工作上翻…

前端常见**MS题 [3]

css部分 1、简单说明一下盒模型 CSS盒模型定义了盒的每个部分包含: margin, border, padding, content 。根据盒子大小的计算方式不同盒模型分成了两种,标准盒模型和怪异盒模型。 标准模型,给盒设置 width 和 height,实际设置的是…

【吊打面试官系列-Memcached面试题】memcached 的多线程是什么?如何使用它们?

大家好,我是锋哥。今天分享关于 【memcached 的多线程是什么?如何使用它们? 】面试题,希望对大家有帮助; memcached 的多线程是什么?如何使用它们? 线程就是定律(threads rule&#…

linux 第一个命令的编写

1. 命令的概念 命令就是可执行程序。 比如说输入“ls -al”命令,ls 就是可执行程序的的名字。-al 就是要传递进去的参数。 ps 命令: 功能:显示进程的动态。 输入 ps 命令 当 shell 接收到命令以后,会根据输入的字符到环境变量和默…

UDP/TCP --- Socket编程

本篇将使用 Linux 中的系统调用来实现模拟 TCP 和 UDP 的通信过程,其中只对 UDP 和 TCP 进行了简单的介绍,本篇主要实现的是代码,至于 UDP 和 TCP 的详细讲解将会在之后的文章中给出。 本篇给出的 tcp 和 udp 的代码中的 echo 都是测试连接是…

电脑死机之后强制关机重启,只能进入到Bios,不能进入到系统?

前言 最近遇到好几件比较有意思的事情,粉丝过来求助咨询:电脑不知怎的就黑屏死机了,重启之后,电脑只能进入到Bios,无论怎么重启都没用。 把电脑拆出来看了看,线路一切正常。感觉上可能是内存条的问题&…

NRK3301语音识别芯片在汽车内饰氛围灯上的应用方案解析

随着智能汽车的快速发展,车载语音交互技术逐渐成为提升驾驶体验的关键技术之一。传统的汽车内饰氛围灯语音识别系统往往依赖于手动操作,不仅操作繁琐,而且在驾驶过程中容易分散驾驶员的注意力。因此,开发一种高效、便捷的汽车内饰…

OpenAI gym: when is reset required?

题意:“OpenAI Gym: 什么时候需要重置?” 问题背景: Although I can manage to get the examples and my own code to run, I am more curious about the real semantics / expectations behind OpenAI gym API, in particular Env.reset() …

基于网格尺度的上海市人口分布空间聚集特征分析与冷热点识别

在上篇文章提到了同一研究空间在不同尺度下的观察可能会带来不同的见解和发现,这次我们把尺度缩放到网格,来看网格尺度下的空间自相关性、高/低聚类,这些,因为尺度缩放到网格尺度了,全国这个行政区范围就显的太大了&am…

Python采集网页数据:八招全解

在信息时代,海量的数据日益成为企业和个人获取商业价值的重要手段。而获取这些数据的方式之一就是通过网络爬虫技术采集网络上的各种信息,对于 Python 程序员来说,这项工作并不困难。本文将从八个方面,带你了解如何使用 Python 采…

查找技术与平衡查找树

目录 引言 查找技术的重要性 顺序查找 顺序查找的优缺点对比 二分查找 二分查找的步骤总结 哈希查找 哈希函数设计与冲突解决 平衡查找树 二叉搜索树、AVL树与红黑树 平衡查找树的插入与删除操作 平衡查找树的应用场景 总结与应用 综合实例分析 引言 查找是计算机…

算法训练营三刷(Java) | 第六天~第十一天

算法训练营三刷(Java) | 第六天~第十一天 第六天 LeetCode 242 有效的字母异位词 解题思路: 数组哈希记录每个字幕出现的次数,然后进行比较。Java中字符串取下标i处字符可以使用charAt成员函数也可以转化为字符数组之后用数组的…

三菱PLC数据 转IEC61850项目案例

目录 1 案例说明 2 VFBOX网关工作原理 3 准备工作 4 网关采集三菱PLC数据 5 用IEC61850协议转发数据 6 网关使用多个逻辑设备和逻辑节点的方法 7 其他说明 8 案例总结 1 案例说明 设置vfbox网关采集三菱PLC数据把采集的数据转成IEC61850协议转发给其他系统。 2 VFBOX网关工…

【Python大语言模型系列】如何在LangChain中使用ReAct构建AI Agent(案例+源码)

一、引言 当前,在各个大厂纷纷卷LLM的情况下,各自都借助自己的LLM推出了自己的AI Agent,比如字节的Coze,百度的千帆等,还有开源的Dify。你是否想知道其中的原理?是否想过自己如何实现一套AI Agent&#xff…

联想凌拓发布多款新一代AI数据管理解决方案

联想凌拓发布多款新一代AI数据管理解决方案 联想凌拓正式宣布推出 NetApp AFF C 系列、 NetApp ASA A 系列、 NetApp ASA C 系列、Lenovo ThinkSystem DG系列、Lenovo ThinkSystem DM3010H企业级存储阵列及MagnaScale数据管理平台V4.0全面升级,让企业应用更简便、更…

华为数通方向HCIP-DataCom H12-821题库(更新单选真题:21-30)

第21题 以下关于0SPF中ABR的描述,错误的是哪一项? A、ABR将连接的非骨干区域内的1类和2类1SA转换成3类LSA,发布到骨干区域中 B、ABR不能够产生4类和5类LSA C、ABR上有多个LSDB,ABR为每一个区域维护一个LSDB D、ABR将骨干区域内的1类、2类LSA和3类LSA转换成三类LSA,发布到…

容器篇(JavaSE - 集合)(持续更新迭代)

目录 有意者可加 一、集合 1. 出现的背景 2. 带大家具体了解下集合 3. 集合带来了哪些好处 4. 集合的特点 5. 集合和数组对比 6. 数组和集合应用场景(对比) 6.1 数组的应用场景 1. 存储一组数据 2. 图像处理 3. 矩阵运算 4. 缓存 6.2 集合…