java数据结构与算法刷题-----LeetCode459. 重复的子字符串

冲刺大厂之 Java 刷题总结 将该专栏的题目刷完,仔细学习整理,冲刺大厂没问题加油!!!! 文章目录一、数组二、链表三、哈希表四、字符串五、双指针法六、栈与队列七、二叉树八、回溯法九、贪心算法十、动态规划十一、单调队列十一、输入输出练习十二、补充目录十三、真题练习十四、扩展目录 一、数组 序号 题目 知识点 01 关于数组你不得不知道的事 数组方法总结 35 搜索插入位置 二分法总结 27 移除元素 双指针法 209 长度最小的子数组 滑动窗口 59 螺旋矩阵 II 模拟数组,关键确定边界条件 二 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

在这里插入图片描述

本题的高效解法,需要使用KMP算法中,NEXT数组的处理逻辑

KMP算法https://blog.youkuaiyun.com/grd_java/article/details/136107363
解题思路
  1. 以abcabcabcabc为例对应NEXT数组为[0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  2. 可见最长公共前后缀为abcabcabc.我们发现,如果是通过固定子串重复若干次组成的字符串,减去最长公共前后缀后,剩下的就是这个重复若干次的固定子串
  3. 所以我们可以利用KMP算法中的NEXT数组,获取整个字符串的最长公共前后缀长度。
  4. 对于这个例子就可以得到最长公共前后缀长度为9. 而整个字符串长度len = 12. 12-9 = 3. 3就是固定重复子串abc的长度。
  5. 如果整个字符串都可以被abc这个固定重复子串整除,那么就说明这个字符串一定是满足题意的。
  6. 也就是len % (len - next[len-1]) == 0的话,就满足题意。简单来说就是len - next[len-1]是固定重复子串abc的长度。len是整个字符串的长度。如果len可以被abc这个固定重复子串整除,那么就满足题意。
代码

在这里插入图片描述

class Solution {
    public boolean repeatedSubstringPattern(String s) {
        if (s.equals("")) return false;
        int len = s.length();//字符串长度
        char[] chars = s.toCharArray();//转换为字符数组
        int[] next = new int[len];//创建KMP算法的NEXT数组,下标从1开始
        //KMP--NEXT数组三步走
        for (int i = 1, j = 0; i < len; i++) {//直接从第二个元素比
            while (j > 0 && chars[i] != chars[j]) j = next[j-1];//如果不匹配,获取应该回退的位置
            if (chars[i] == chars[j]) j++;//如果匹配,则公共缀长度+1
            next[i] = j;//记录当前缀的公共前后缀长度
        }
        //此时next[len-1]保存的是整个字符串的最长公共前后缀长度。
        //如果此时next[len-1]这个前后缀公共长度,将其从字符串中剔除,正好剩下重复子串
        //那就说明整个字符串都是用重复子串构成的。整个字符串的长度,也就可以通过这个重复子串整除
        if (next[len-1] > 0 && len % (len - next[len-1]) == 0) return true;//如果可以被重复子串长度整除就返回true
        else return false;//否则返回false
    }
}
技能伤害继承英雄属性【War3地图编辑器】 风暴之锤跟随山丘之王的力量增长 阅读详情

相关推荐

德国冯哈勃 Faulhaber2342L012空心杯减速电机带编码器

为了制作平衡车,我在淘宝上面买了一个 Faulhaber2342L012空心杯减速电机电机,具体参数如下: 一:电机参数 型    号:德国冯哈勃Faulhaber带编码器空心杯减速电机2342L012  12V每分 钟 120转 工作电压: 12V 空载转速:8100RPM(转每分钟) 减速后速:120RPM(转每分钟) 直     径:30mm

u011511430的专栏 1万+

力扣:重复的子字符串java(移动匹配和KMP)

力扣:重复的子字符串java(移动匹配和KMP)

qq_42325147的博客 773

【计算摄影】相机成像原理:从光到JPEG图像

本文我们将从最基本的相机成像原理开始论述,再讨论光线进入相机后,经过一系列处理成为JPEG图像的大致流程。

qq_35149975的博客 2万+

重复的子字符串Java解法

先进行遍历,先判断单个重复的情况。然后是多个字符重复,先对是否是子串的倍数进行筛选,然后以子串长度为滑动窗口进行向后比较即可。可由子串 "abc" 重复四次构成。(或子串 "abcabc" 重复两次构成。,检查是否可以通过由它的一个子串重复多次构成。给定一个非空的字符串。

皮_客的博客 659

EBS开发_创建AP付款

--以下代码于20181002在Tony环境测试通过 /* BEGIN   --mo_global.init('SQLAP');   apps.fnd_global.apps_initialize(user_id =&gt; 1110, resp_id =&gt; 50597, resp_appl_id =&gt; 20003);   --mo_global.set_policy_context(...

蜗牛先生快跑的博客 4767

绕过限制?实测修改UA在PC端运行微信小程序的可行性及风险

本文探讨了通过修改User-Agent(UA)在PC端运行微信小程序的技术可行性及风险。分析了小程序设备限制的技术原理,包括`wx.getSystemInfo`API和UA检测机制,并提供了多种修改方案及其局限性。同时强调了潜在的安全和法律风险,推荐使用官方模拟器或安卓模拟器等更安全的替代方案。

weixin_30879169的博客 365

重复的子字符串-力扣459-Java

高效求解重复子串

TLJava^v^的博客 345

ArcGIS栅格拼接全攻略:从核心原理到色彩平衡与大数据处理

在GIS数据处理中,栅格拼接是一项基础且关键的操作,其本质是将多幅具有重叠区域的栅格图像无缝整合为一张完整地图。该技术涉及空间参考统一、像元对齐与色彩融合等核心原理,是构建连续地理空间数据的基石。其技术价值在于保障数据完整性、提升可视化效果,并为后续的空间分析提供可靠底图。在遥感影像处理、数字高程模型构建及地图制图等应用场景中,高质量的拼接成果至关重要。本文聚焦于ArcGIS平台,深入解析其栅格拼接工具,并针对常见的色彩不一致与大数据量处理难题,提供了基于**色彩平衡**和**金字塔**优化的实战解决方案,

weixin_33158887的博客 263

【LeetCode】【Java】459.重复的子字符串

给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。 示例 1: 输入: "abab" 输出: True 解释: 可由子字符串 "ab" 重复两次构成。 示例 2: 输入: "aba" 输出: False 示例 3: 输入: "abcabcabcabc" 输出: True 解释: 可由子...

EddieTries的博客 907

水文仿真软件:HEC-RAS (Hydrologic Engineering Center‘s River Analysis System)_(7).一维非稳态水力模型

自定义脚本是通过编程语言(如 Python)编写的一系列自动化任务,可以帮助用户更高效地处理数据和运行模型。编写脚本:使用 Python 或其他编程语言编写自定义脚本。集成脚本:将脚本集成到 HEC-RAS 中,实现自动化数据处理和模型运行。

kkchenjj的博客 933

实验7:机器学习油田产量预测-代码数据-完整代码数据可直接运行-计算机毕设

实验7:机器学习油田产量预测-代码数据-完整代码数据可直接运行-计算机毕设

机器学习深度学习业余选手 479

[牛客算法总结]:重复的子字符串

关于一个字符串,如果可以通过重复多次它的字符串来构成,那么这个字符串一定包含在这两个字符串重复叠加一下(也就是两个str加载一起),去掉第一个和最后一个字符的字符串中,如果你不相信,你可以自己去试试看。刚开始看这道题目的时候,我就想到了旋转字符串的那种巧妙的解法,然后就想着能否用之前的方法来解决,但是有些不同。给定一个字符串,请你判断这个字符串是否可以通过重复多次它的子字符串来构成。这种解法是非常巧妙的,所以有些时候,你会发现,算法很美~保证字符串中仅包含小写英文字母。

BlueProtocolBlog 321

基于全局和局部接受性因果特征的广义学习模型,用于在线增量机械故障诊断

本文提出了一种**因果广义学习模型(CBLM)**,用于在线增量机械故障诊断。该模型结合了**全局因果特征**(时域、频域、故障特征频率均值)和**多尺度局部因果特征**(通过扩张卷积提取),构建了一个具有**增量学习能力**的广泛学习系统(BLS)。CBLM支持**结构增量学习**(增加增强节点)和**样本增量学习**(动态更新权重),无需重新训练整个模型,显著提高了计算效率和诊断精度。在两个滚动轴承数据集上的实验表明,CBLM在诊断准确性和训练时间上均优于传统深度学习模型,适用于在线实时故障诊断。

huanghm88的专栏 388

leetcode【字符串—简单】459.重复的子字符串

给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。 示例 1: 输入: "abab" 输出: True 解释: 可由子字符串 "ab" 重复两次构成。 示例 2: 输入: "aba" 输出: False 示例 3: 输入: "abcabcabcabc" 输出: True 解释: 可由子字符串 "abc" 重复四次构成。 (或者子字符串 "abcabc" 重复两次构成。)

每个人都是独一无二的,把握好自己的节奏,跟着自己的心走。 1221

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

459.重复的子字符串

package test; import java.util.ArrayList; import java.util.List; /** * 459.重复的子字符串 * 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。 * * 示例 1: * * 输入: "abab" * * 输出: True * ...

m0_37648645的博客 157

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【算法刷题day9】Leetcode:28. 实现 strStr()、 459.重复的子字符串

等暑假回家,翻开我的408好好复习一下再写28. 实现 strStr()

qq_45022758的博客 290

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

459. 重复的子字符串

给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。解释: 可由子串 “ab” 重复两次构成。输入: s = “abab”输入: s = “aba”

hhhwangshuai的博客 374

LeetCode题练习与总结:重复的子字符串--459

本文详细介绍了如何判断一个字符串是否可以通过其子串重复构成,包括解题思路、具体代码实现、时间复杂度与空间复杂度分析,以及涉及的知识点,为解决此类问题提供了清晰的指导。

一直学习永不止步 900

leetcode刷题记录(二十九)——(KMP算法)459. 重复的子字符串

- 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。给定一个非空的字符串s,检查是否可以通过由它的一个子串重复多次构成。s = "abab"true可由子串 "ab" 重复两次构成。s = "aba"falsetrue可由子串 "abc" 重复四次构成。(或子串 "abcabc" 重复两次构成。

weixin_45994787的博客 542

可爱宝宝力扣刷题集目录

阿勒八叉

zhuruihe2014的博客 941

leetcode 459. 重复的子字符串

给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。 给定的字符串只含有小写英文字母,并且长度不超过10000。 示例 1: 输入: "abab" 输出: True 解释: 可由子字符串 "ab" 重复两次构成。 示例 2: 输入: "aba" 输出: False 示例 3: 输入: "abcabcabcabc" 输出: True 解释: 可由子字符串 "abc" 重...

skymeteorite 224

代码随想录算法训练营第九天 | Leetcode151翻转字符串里的单词,卡码网55右旋转字符串,Leetcode28实现strStr(),Leetcode459重复的子字符串,字符串总结,双指针回顾

Day9

鸽鸽鸽 913

leetcode刷题目录

刷题 参考 模拟 leetcode:1. 两数之和 leetcode:2. 两数相加 leetcode:6. Z 字形变换 leetcode:7. 整数反转 leetcode:8. 字符串转换整数 (atoi) dp leetcode:5. 最长回文子串 排序 交换类排序 – 冒泡排序 鸡尾酒排序 奇偶排序 梳子排序 侏儒排序 快速排序 臭皮匠排序 Bogo 排序 选择类排序 – 选择排序 堆排序 Smooth 排序 笛卡尔树排序 锦标赛排序 圈排序 插入类排序 – 插入排序 希尔排序 二叉查找

OceanStar的博客 3684

Java基础知识总结(刷力扣必备)

Java语言基础 关于数组和ArrayLis ArrayList和数组int[]的相互转化

qq_40419964的博客 3584

力扣算法练习汇总(持续更新......)

目录标题一、排序篇二、力扣篇 一、排序篇 Java实现快速排序–O(nlogn) 二、力扣篇

qq_43783527的博客 2049

【LeetCode】459. 重复的子字符串

题目链接:https://leetcode-cn.com/problems/repeated-substring-pattern/description/ 题目描述 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000 示例 输入: “abab” 输出: True 解释: 可由子字符串 “ab” 重复两次构成。 输入: “abca...

fuqiuai的博客 1461
上一篇: java数据结构与算法基础-----字符串------KMP算法
下一篇: java数据结构与算法基础-----位运算-----持续补充
ydenergy_殷志鹏
博客等级 码龄7年 5886粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值