有一种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
synology-dsm-文件复制-删除 我创建了此实用程序,以通过保留找到的第一个版本来一次性删除重复的文件,因为dsm仅允许一个一个地删除每个单独的文件。 我添加了在实际运行真正的删除操作之前进行空运行(不删除)的...
Atomsk 是一款开源软件,主要用于处理晶体结构和原子配置数据,尤其在材料科学领域有着广泛的应用。它支持各种文件格式的导入与导出,能够帮助研究人员进行晶格参数的调整、结构转换、原子坐标的计算等工作。...
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 绿色版——高效重复图片查找工具解析》 在数字时代,我们的电脑和移动设备中往往存储了大量的图片,随着时间的推移,重复图片的问题变得越来越普遍。这些重复的图片不仅占用...