有一种String,是把一个更短的String重复n次而构成的,那个更短的String长度至少为2,输入一个String写代码返回true或者false
例子:
"abcabcabc" true 因为它把abc重复3次构成
"bcdbcdbcde" false 最后一个是bcde
"abcdabcd" True 因为它是abcd重复2次构成
"xyz" false 因为它不是某一个String重复
"aaaaaaaaaa" false 重复的短String长度应至少为2(这里不能看做aa重复5次)
要求算法复杂度为O(n)
Solution:
patternPos表示从哪里开始匹配。初始值为0。
patternEnd表示模式结束的位置。初始值为0。
当前字符和patternPos不相等的话,说明pattern不成立,patternPos回到开始位置0,patternEnd设为当前字符所在位置i。
当前字符和patternPos相等的话,patternPos加1移到下一个位置,patternEnd保持不变。并检查下如果patternPos超过patternEnd的话,说明截止到当前字符成功匹配,patternPos回到开始开始匹配下一串字符。注意,当i走到最后的话,patternPos就不用清0了。
最后判断成功的条件是,patternPos大于patternEnd的时候,说明整个字符串pattern且至少重复pattern两次。patternEnd大于零,说明pattern长度大于1。
public boolean isMultipleDuplicate(String s) { int patternPos = 0, patternEnd = 0; for(int i=1; i<s.length(); i++) { if(s.charAt(i) != s.charAt(patternPos)) { patternPos = 0; patternEnd = i; } else { if(++patternPos > patternEnd && i != s.length()-1) { patternPos = 0; } } } return patternPos>patternEnd && patternEnd>0; }
Output:
abcabcabc: truebcdbcdbcde: false
abcdabcd: true
xyzxy: false
aaaaaaaaaa: false
ABABCABABC: true
bcdbcdbcdebcdbcdbcde: true
ababeabab: false
ababab: true
bcdbcdbcdbcdbcdbc: false
abcabcabcab: false
相关推荐
eslint-plugin-require-duplicate ESLint插件使用require(“ ...”)语法发现重复的导入。 安装 您首先需要安装 : $ npm i eslint --save-dev 接下来,安装eslint-plugin-require-duplicate : $ npm install ...
标题中的"dupe-krill-master_OnceAndForAll_duplicate_"暗示了这是一个关于查找和处理重复文件的项目,其中"OnceAndForAll"可能是该工具的名称,专注于消除重复内容的文件。描述提到"Replaces files that have ...
叉子deze leertaak en ga aan渣。 jouw eigen GitHub omgeving uitwerken中的Onderstaande大纲和je geedurende deze taak。 德·斯蒂文·温德·杰(Zoals altijd),在: 标题描述 :nerd_face:目录产品特点安装...
"DuplicateCodeFinder"是一款专用于查找代码重复的工具,它能帮助软件开发人员高效地定位并消除项目中的重复代码,从而提高代码质量和维护性。在软件工程中,重复代码被视为不良编程实践,因为它可能导致不必要的...
google-calendar-quick-duplicate 一个简单的Chrome扩展程序,可以快速复制Google日历上的事件。 这个怎么运作 此扩展程序在事件预览卡上添加了“复制事件”图标,使您可以单击一下快速复制它。 错误和功能要求 ...
straight-1x3pin - duplicate1 straight-1x4pin straight-1x4pin - duplicate straight-1x5pin straight-1x8pin straight-1x8pin - duplicate straight-2x2pin straight-2x3pin straight-2x4pin straight-2x5pin SW-...
maven-duplicate-finder-plugin-1.0.4.jar
检查NuGet软件包的重复项概括此构建/发行扩展名可帮助您在单个解决方案中的多个项目中确定特定NuGet软件包的不同版本的使用情况,从而避免出现版本地狱。发行说明0.1.0 初版有什么问题? 您可能遇到一种情况,您的...
maven-duplicate-finder-plugin-1.0.0.jar
Duplicate Email Remover (Add-In for Microsoft Outlook 2000/XP/2003): README ============================================ Please read this file carefully (especially "Installation" chapter) before ...
3.81mm40pin - duplicate - duplicate 3.81mm接线端子 3.81mm接线端子 - duplicate 3.81MM接线端子32Pin 3.81MM接线端子32Pin - duplicate 3端接口 4M-3PIN-SMT 4PAD 9PIN-SMT 10U_TAN 10uH-SMT 12C4052 12P端子 15D...
"duplicate-string-detector"项目就是一个专门用于检测文本中重复字符串的实用工具,它利用JavaScript语言的强大功能,为开发者提供了一个高效且易用的解决方案。 一、项目简介 该项目的核心目标是帮助开发者快速找...
java删除文件源码搜索并删除重复的文件 Prerequisites: 1. JDK must be installed, and 2. Path environments must ...is ... duplicate files. Open the file and REMOVE THE ENTRIES WHICH YOU WA
Duplicate address 10.110.70.126 on VLAN909, sourced by 0016-ec71-9996 4. 如果日志里没有信息显示信息,就需要查看交换机的 ARP 地址表。通过 disARP | in VLAN 号,如 dis ARP | in 909。 例如: ...
synology-dsm-文件复制-删除 我创建了此实用程序,以通过保留找到的第一个版本来一次性删除重复的文件,因为dsm仅允许一个一个地删除每个单独的文件。 我添加了在实际运行真正的删除操作之前进行空运行(不删除)的...
Oracle 11gR2 dataguard搭建说明
- **DML与服务器**:优化了冲突事务的处理性能,改进了`INSERT IGNORE ON DUPLICATE KEY UPDATE`语句的执行效率。 - **优化EXPLAIN输出**:提供更清晰的查询解释。 - **服务器端游标**:支持服务器端的游标操作,...
`laravel_duplicate_query_cache`是一个专门为解决这个问题而设计的小型库,它的目标是在一个请求生命周期内缓存重复的数据库查询,以减少不必要的计算和提高应用程序性能。 首先,我们需要理解Laravel的查询构建器...
Laravel在重复的密钥上插入并忽略插入 不推荐使用此软件包,因为已将upsert和insertOrIgnore添加到Laravel。 如果需要透视功能,则可以轻松实现: BelongsToMany :: macro ( 'attachUpsert' , function ( $ id , ...
《Alike Duplicate Image Finder 2.2 绿色版——高效重复图片查找工具解析》 在数字时代,我们的电脑和移动设备中往往存储了大量的图片,随着时间的推移,重复图片的问题变得越来越普遍。这些重复的图片不仅占用...