动态电子商务网站 制作网站底部导航设置

web/2025/10/6 1:24:27/文章来源:
动态电子商务网站 制作,网站底部导航设置,企业邮箱登录入口首页,seo推广百度百科题目 给定一个非空的字符串#xff0c;判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母#xff0c;并且长度不超过10000。 示例 1: 输入: abab输出: True解释: 可由子字符串 ab 重复两次构成。 示例 2: 输入: aba…题目 给定一个非空的字符串判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母并且长度不超过10000。 示例 1: 输入: abab输出: True解释: 可由子字符串 ab 重复两次构成。 示例 2: 输入: aba输出: False 示例 3: 输入: abcabcabcabc输出: True解释: 可由子字符串 abc 重复四次构成。 (或者子字符串 abcabc 重复两次构成。) 思路  暴力的解法 就是一个for循环获取子串的终止位置 然后判断子串是否能重复构成字符串又嵌套一个for循环所以是O(n^2)的时间复杂度。 有的同学可以想怎么一个for循环就可以获取子串吗 至少得一个for获取子串起始位置一个for获取子串结束位置吧。 其实我们只需要判断以第一个字母为开始的子串就可以所以一个for循环获取子串的终止位置就行了。 而且遍历的时候 都不用遍历结束只需要遍历到中间位置因为子串结束位置大于中间位置的话一定不能重复组成字符串。 暴力的解法这里就不详细讲解了。主要讲一讲移动匹配 和 KMP两种方法。(转载自代码随想录) 移动匹配 当一个字符串sabcabc内部由重复的子串组成那么这个字符串的结构一定是这样的 也就是由前后相同的子串组成。 那么既然前面有相同的子串后面有相同的子串用 s s这样组成的字符串中后面的子串做前串前面的子串做后串就一定还能组成一个s如图 所以判断字符串s是否由重复子串组成只要两个s拼接在一起里面还出现一个s的话就说明是由重复子串组成。 当然我们在判断 s s 拼接的字符串里是否出现一个s的的时候要刨除 s s 的首字符和尾字符这样避免在ss中搜索出原来的s我们要搜索的是中间拼接出来的s。 代码如下 class Solution { public:bool repeatedSubstringPattern(string s) {string t s s;t.erase(t.begin()); t.erase(t.end() - 1); // 掐头去尾if (t.find(s) ! std::string::npos) return true; // rreturn false;} };时间复杂度: O(n)空间复杂度: O(1) 不过这种解法还有一个问题就是 我们最终还是要判断 一个字符串s s是否出现过 s 的过程大家可能直接用containsfind 之类的库函数。 却忽略了实现这些函数的时间复杂度暴力解法是m * n一般库函数实现为 O(m n)。 如果我们做过上一个题目的话其实就知道实现一个 高效的算法来判断 一个字符串中是否出现另一个字符串是很复杂的这里就涉及到了KMP算法。 KMP 为什么会使用KMP 以下使用KMP方式讲解强烈建议大家先把以下两个视频看了理解KMP算法再来看下面讲解否则会很懵。 视频讲解版帮你把KMP算法学个通透理论篇(opens new window)视频讲解版帮你把KMP算法学个通透求next数组代码篇(opens new window)文字讲解版KMP算法(opens new window) 在一个串中查找是否出现过另一个串这是KMP的看家本领。那么寻找重复子串怎么也涉及到KMP算法了呢 KMP算法中next数组为什么遇到字符不匹配的时候可以找到上一个匹配过的位置继续匹配靠的是有计算好的前缀表。 前缀表里统计了各个位置为终点字符串的最长相同前后缀的长度。 那么 最长相同前后缀和重复子串的关系又有什么关系呢。 可能很多人又忘了 前缀和后缀的定义再回顾一下 前缀是指不包含最后一个字符的所有以第一个字符开头的连续子串后缀是指不包含第一个字符的所有以最后一个字符结尾的连续子串 在由重复子串组成的字符串中最长相等前后缀不包含的子串就是最小重复子串这里拿字符串sabababab 来举例ab就是最小重复单位如图所示 如何找到最小重复子串 这里有同学就问了为啥一定是开头的ab呢。 其实最关键还是要理解 最长相等前后缀如图 步骤一因为 这是相等的前缀和后缀t[0] 与 k[0]相同 t[1] 与 k[1]相同所以 s[0] 一定和 s[2]相同s[1] 一定和 s[3]相同即s[0]s[1]与s[2]s[3]相同 。 步骤二 因为在同一个字符串位置所以 t[2] 与 k[0]相同t[3] 与 k[1]相同。 步骤三 因为 这是相等的前缀和后缀t[2] 与 k[2]相同 t[3]与k[3] 相同所以s[2]一定和s[4]相同s[3]一定和s[5]相同即s[2]s[3] 与 s[4]s[5]相同。 步骤四循环往复。 所以字符串ss[0]s[1]与s[2]s[3]相同 s[2]s[3] 与 s[4]s[5]相同s[4]s[5] 与 s[6]s[7] 相同。 正是因为 最长相等前后缀的规则当一个字符串由重复子串组成的最长相等前后缀不包含的子串就是最小重复子串。 简单推理 这里再给出一个数学推导就容易理解很多。 假设字符串s使用多个重复子串构成这个子串是最小重复单位重复出现的子字符串长度是x所以s是由n * x组成。 因为字符串s的最长相同前后缀的长度一定是不包含s本身所以 最长相同前后缀长度必然是m * x而且 n - m 1这里如果不懂看上面的推理 所以如果 nx % (n - m)x 0就可以判定有重复出现的子字符串。 next 数组记录的就是最长相同前后缀 字符串KMP算法精讲 (opens new window)这里介绍了什么是前缀什么是后缀什么又是最长相同前后缀) 如果 next[len - 1] ! -1则说明字符串有最长相同的前后缀就是字符串里的前缀子串和后缀子串相同的最长长度。 最长相等前后缀的长度为next[len - 1] 1。(这里的next数组是以统一减一的方式计算的因此需要1两种计算next数组的具体区别看这里字符串KMP算法精讲 (opens new window)) 数组长度为len。 如果len % (len - (next[len - 1] 1)) 0 则说明数组的长度正好可以被 (数组长度-最长相等前后缀的长度) 整除 说明该字符串有重复的子字符串。 数组长度减去最长相同前后缀的长度相当于是第一个周期的长度也就是一个周期的长度如果这个周期可以被整除就说明整个数组就是这个周期的循环。 强烈建议大家把next数组打印出来看看next数组里的规律有助于理解KMP算法 如图 next[len - 1] 7next[len - 1] 1 88就是此时字符串asdfasdfasdf的最长相同前后缀的长度。 (len - (next[len - 1] 1)) 也就是 12(字符串的长度) - 8(最长公共前后缀的长度) 4 4正好可以被 12(字符串的长度) 整除所以说明有重复的子字符串asdf。 C代码如下这里使用了前缀表统一减一的实现方式 class Solution { public:void getNext (int* next, const string s){next[0] -1;int j -1;for(int i 1;i s.size(); i){while(j 0 s[i] ! s[j 1]) {j next[j];}if(s[i] s[j 1]) {j;}next[i] j;}}bool repeatedSubstringPattern (string s) {if (s.size() 0) {return false;}int next[s.size()];getNext(next, s);int len s.size();if (next[len - 1] ! -1 len % (len - (next[len - 1] 1)) 0) {return true;}return false;} };时间复杂度: O(n)空间复杂度: O(n) 前缀表不减一的C代码实现 class Solution { public:void getNext (int* next, const string s){next[0] 0;int j 0;for(int i 1;i s.size(); i){while(j 0 s[i] ! s[j]) {j next[j - 1];}if(s[i] s[j]) {j;}next[i] j;}}bool repeatedSubstringPattern (string s) {if (s.size() 0) {return false;}int next[s.size()];getNext(next, s);int len s.size();if (next[len - 1] ! 0 len % (len - (next[len - 1] )) 0) {return true;}return false;} };时间复杂度: O(n)空间复杂度: O(n)

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

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

相关文章

阜宁县城乡建设局新的官方网站盗用别的公司网站模块

您好,这里是「码农镖局」CSDN博客,欢迎您来,欢迎您再来~ 截止到目前,算上ZGC,Java一共有九种类型的GC,它们分别是: 1、Serial GC 串行/作用于新生代/复制算法/响应速度优先/适用于单…

网站定制公司多少人用wordpress

1.前言 cesium中提供了一些高级的api,可以自己写一些shader来制作炫酷的效果。 ShaderToy 是一个可以在线编写、测试和分享图形渲染着色器的网站。它提供了一个图形化的编辑器,可以让用户编写基于 WebGL 的 GLSL 着色器代码,并实时预览渲染结…

无锡个人网站制作网站建设实习困难

题意 给定n个非负整数\(a_1,a_2,...,a_n\),其中每个数表示坐标点\((i,a_i)\),i是数组下标,\(a_i\)是对应高度.寻找两条线,使得两条线构成的长方形面积最大,盛水最多. Example: Input: [1,8,6,2,5,4,8,3,7] Output: 49 解 暴力破解 对每种情况进行循环,计算对应的面积,同时保存最…

网站建设6000元在线教学网站开发

电脑20多天没用,忘记Ubuntu 14.04 root密码了,下面是在网上找到的一个解决办法,其它的和这个也大概相同。因为其中有些缺漏,没能给我解决问题。通过分析最终问题还是解决了,现解决方案的关键点记录一下。希望能方便到其…

柴沟堡做网站设计logo网站侵权吗知乎

一.回调函数: 1.什么事回调函数:通过函数指针调用函数 2.应用例子: https://blog.csdn.net/hot_water_oh/article/details/136572650?spm1001.2014.3001.5501 (此链接为提到转义表所在博客的链接) 依然以转义表为例…

手机端网站尺寸dede网站地图

我一直以为我电脑上的摄像头老是打不开是因为硬件不匹配的问题。知道我发现了我的拯救者Y7000的机身盘边的“摄像头开关”按钮。。。 我去,你的摄像头开关按钮怎么设置在机身旁边啊。。。。 —————————————————————— 2024年3月21日更新记录&a…

企业网站 phpcmswordpress 插件权限

【0】README 1)本文文字描述转自 core java volume 2, 旨在学习 java分布式对象——远程方法中的参数和返回值远程对象激活 的相关知识; 【1】远程方法中的参数和返回值 1) 在开始进行远程方法调用时,调用参数需要从…

重庆网站建设方案详细方案网站制作技巧

1. Web services 平台的元素: SOAP (简易对象访问协议) UDDI (通用描述、发现及整合) WSDL (Web services 描述语言)1.1 什么是 SOAP? 基本的 Web services 平台是 XML HTTP。 SOAP 指简易对象访问协议 SOAP 是一种通信协议 SOAP 用于应用程序之间的通信…

网站分辨率自适应代码佛山企业网站seo

音频编程时游戏开发中最容易忽略,学习资源又是很少的环节。接下来,你将和我探索人耳的工作机制。 what is sound? 我们可以解释电视机是如何通过眼睛传递视觉信息的,但却往往无法对听觉信息做出类似的解释。 对声音的科学研究被称为声学&…

工业品企业网站源码网络推广学校培训

一、Linux基础命令 (一)Linux的目录结构 1、盘符 Linux中无盘符的概念,只有一个根目录 “/” 也就是只有一棵树) 而windows里面有多棵树,每个盘符都是一棵树的根 在Linux系统中,路径之间的层级关系,使用…

苏州网站制作网络建设公司博州住房和城乡建设部网站

我很难思考与Java 加载有关的东西,而不是与类加载器有关的东西。 在使用应用程序服务器或OSGi的情况下尤其如此,在这些应用程序服务器或OSGi中,经常使用多个类加载器,并且透明地使用类加载器的能力降低了。 我同意OSGI Alliance B…

怎么免费网站高端效果图制作公司

正题 评测记录:https://www.luogu.org/recordnew/lists?uid52918&pidP1282 题目大意 n个多米诺骨牌,上下值不相同,可以交换一个多米诺上下的值,求最少的交换次数使上下之和的差值最小。 解题思路 用fi,jNfi,jN表示只计算前i个多米诺&…

购物网站建设网长沙网红景点

微服务注册中心 注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就这里找到服务的地址,进行调用。 微服务注册中心 服务注…

主机屋网站在那注册展览会建设网站平台的作用

关于 情绪检测,是脑科学研究中的一个常见和热门的方向。在进行情绪检测的分类中,真实数据不足,经常导致情绪检测模型的性能不佳。因此,对数据进行增强,成为了一个提升下游任务的重要的手段。本项目通过DCGAN模型实现脑…

临沂定制网站建设公司我公司要网站建设

之前的学习笔记“SPI不够用?USART来帮忙”一文中介绍了用如何把USART当做SPI来用的方法。此外,ST的USART还有很多新特性,没准有你不知道的。在此,我们整理出来以下串口新特性,供大家参考。支持RXD和TXD管脚互换很多时候…

东平做网站苏州吴中区seo关键词优化排名

Ajax的传递json数据的实现&#xff1a; 看这篇之前建议大家去看看前面两篇文章&#xff1a; 1.Ajax基本案例详解之$.ajax的实现 2.Ajax基本案例详解之$.get的实现 现在来看一下具体的内容&#xff0c;在index.jsp的<script>里面写&#xff1a; $.ajax({url:"…

镇江网站建设远航科技用vs2017做网站

HUAWEI Mate X3是全球首款四曲折叠手机&#xff0c;轻薄实力派。它采用了独创的寰宇舷窗设计&#xff0c;内外双屏高清呈现均支持120Hz疾速高刷&#xff0c;10.7亿色彩显示&#xff0c;获得德国莱茵TV色准和准确色彩投射双认证。无论是看视频、玩游戏、办公学习&#xff0c;还是…

油边机 东莞网站建设四川德行天下建设工程有限公司网站

目录 1.什么是LRU算法 2.LRU算法原题描述 3.LRU算法设计 4.LRU算法细节分析 5.代码实现 1.什么是LRU算法 就是一种缓存淘汰策略。 计算机的缓存容量有限&#xff0c;如果缓存满了就要删除一些内容&#xff0c;给新内容腾位置。但问题是&#xff0c;删除哪些内容呢&#…

wordpress内置编辑器免费seo网站推广

在当今数字化时代&#xff0c;IP地址定位工具成为了许多领域中不可或缺的技术支持&#xff0c;为网络安全、地理定位服务和个性化推荐等提供了重要数据支持。其中&#xff0c;IP数据云作为一种领先的IP地址定位工具&#xff0c;具有一系列功能和优势&#xff0c;本文将对其进行…

做网站的公司还市场吗做任务的正规网站

目录 1 vmware exporter安装配置1.1 vmware exporter介绍1.2 安装 - 使用kubernetes部署1、下载2、修改配置文件3、执行安装4、查看 1.3 安装-使用docker的方式1.4 Prometheus配置1.5 Grafana配置&#xff08;模板页面还需要修改&#xff09; 总结 1 vmware exporter安装配置 …