文章目录

  • 1.题目描述
  • 2.解题思路
  • 3.代码实现

1.题目描述

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

示例 1:
输入: s = "abab"
输出: true
解释: 可由子串 "ab" 重复两次构成。示例 2:
输入: s = "aba"
输出: false示例 3:
输入: s = "abcabcabcabc"
输出: true
解释: 可由子串 "abc" 重复四次构成。 (或子串 "abcabc" 重复两次构成。)

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/repeated-substring-pattern

2.解题思路

    这一题同样需要使用KMP算法,不太了解的可以去看上一篇文章——实现strStr。
    这一题的关键在于如何判断字符串是可以被字符串重复的?

string s = "abcdabcd";
next = [0 0 0 0 1 2 3 4];
next[s.size() - 1] != 0//即s的最后一个字符对应的next数组中的数不为0,那么此数即为字符串最大相等前后缀的数值
if(s.size % (s.size() - next[s.size() - 1])) == 0//能被整除说明字符串是最长相等前后缀的若干个周期

3.代码实现

class Solution {public:void getNext(string& s, int* next){next[0] = 0;int front = 0, back = 1;for(; back < s.size(); back++){while(front > 0 && s[front] != s[back]){front = next[front - 1];}if(s[front] == s[back]){front++;}next[back] = front;}}bool repeatedSubstringPattern(string s) {int sLen = s.size();int next[sLen];getNext(s, next);if(next[sLen - 1] != 0 && sLen % (sLen - next[sLen - 1]) == 0){return true;}return false;}
};

算法(字符串)——重复的子字符串相关推荐

  1. [字符串]重复的子字符串

    一.题目描述 原文链接:459. 重复的子字符串 具体描述: 给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成. 示例 1: 输入: s = "abab" 输 ...

  2. js实现kmp算法_「leetcode」459.重复的子字符串:KMP算法还能干这个!

    不瞒你说,重复子串问题,KMP很拿手 题目459.重复的子字符串 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且长度不超过10000. 示例 1: ...

  3. 算法Day8|字符串专题二 剑指 Offer 58 - II. 左旋转字符串,28. 找出字符串中第一个匹配项的下标,459. 重复的子字符串

    剑指 Offer 58 - II. 左旋转字符串 解题思路: 反转区间为前n的子串 反转区间为n到末尾的子串 反转整个字符串 class Solution {public String reverse ...

  4. 459. 重复的子字符串-KMP算法

    459. 重复的子字符串 给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成. 示例 1: 输入: s = "abab" 输出: true 解释: 可由子串 & ...

  5. 字符串7——重复的子字符串

    字符串7--重复的子字符串 例题 题目链接 题目说明 解题 方法一:枚举 思路与算法 代码 复杂度分析 方法二:字符串匹配 思路与算法 代码 复杂度分析 方法三:KMP 算法 思路与算法 代码 复杂度 ...

  6. 【字符串】leet459.重复的子字符串(C/C++/Java/Python/Js)

    leetcode459.重复的子字符串 1 题目 2 思路 3 代码 3.1 C++版本 3.2 C版本 3.3 Java版本 3.4 Python版本 3.5 JavaScript版本 4 总结 K ...

  7. 随想录Day9--28. 实现 strStr() , 459.重复的子字符串

    今天的两道题关键在于学习KMP算法.KMP算法运用场景在于一串字符串里面查找是否含有某个子字符串,如"abcdef"里面就含有"cdf"这么个子字符串.先把题目 ...

  8. 代码随想录Day09:28. 实现 strStr()、459.重复的子字符串、字符串总结 、双指针回顾

    目录 Day09:28. 实现 strStr().459.重复的子字符串.字符串总结 .双指针回顾 28. 实现 strStr() (一刷只看了思想) 459.重复的子字符串 (本题一刷跳过了) 字符 ...

  9. C++horspool算法查找字符串是否包含子字符串(附完整源码)

    C++horspool算法查找字符串是否包含子字符串 C++Shorspool算法查找字符串是否包含子字符串完整源码(定义,实现,main函数测试) C++Shorspool算法查找字符串是否包含子字 ...

  10. 力扣459. 重复的子字符串(KMP,JavaScript)

    如果 next[len - 1] != 0,则说明字符串有最长相同的前后缀(就是字符串里的前缀子串和后缀子串相同的最长长度). 最长相等前后缀的长度为:next[len - 1] . 数组长度为:le ...

最新文章

  1. 前端技术演进(三):前端安全
  2. 你应该了解的CSS语义化命名方式及常用命名规则
  3. UA MATH566 统计理论2 C-R不等式简介
  4. 对Python认识和对我专业的影响
  5. 奥运开幕了 您给开幕式和火炬点火仪式打几分?
  6. matlab直流电机双闭环控制系统设计,基于MATLAB的直流电机双闭环调速系统设计毕业论文.doc...
  7. 【Linux】一步一步学Linux——ncat命令(159)
  8. Jquery ajax提交表单几种方法详解
  9. linux下面 r和 n的区别,【冷知识】关于/r与/n以及 /r/n 的区别总结
  10. 方法论:写好一份产品需求的系统化思考模型
  11. ibatis 存储过程 结果集 map_「大数据」(七十五)Spark之弹性分布式数据集
  12. 形成性考核(计算机应用基础) 答案,2019年最新电大《计算机应用基础(Win7)》形成性考核册及答案.pdf...
  13. 开源激荡 30 年:从免费社区到价值数十亿美元公司
  14. 服务器(Windows镜像)自建git服务器超详细教程
  15. 中华石杉Java面试突击第一季笔记三(分布式缓存)
  16. 解决MacOS系统字体不识别STXingkai问题
  17. 2022总结,强风吹拂
  18. 扫描至计算机功能被禁用,远程访问功能已禁用怎么办_允许远程界面控制被禁用的解决方法...
  19. 子平格局——从旺格/从强格
  20. 我给梵高当Tony:这三款AI绘图工具,就离谱

热门文章

  1. Revel框架搭建的后台管理系统脚手架
  2. Rest-assured使用
  3. thinkphp下载MP4视频
  4. 美,英,荷文元音及元音组合国际音标对照表
  5. 计算机上e盘拒绝访问,E盘拒绝访问怎么办?Win7系统E盘拒绝访问的方法
  6. 虚拟机跑服务器网速慢,VMware虚拟机上网速度慢怎么办-解决VMware打开网页缓慢的方法 - 河东软件园...
  7. 反激电源电路电磁干扰抑制措施
  8. 锋迷商城spring-vue项目流程和笔记
  9. 英语发音规则---L字母
  10. java列举生活中类和对象_趣味解读Python面向对象编程 (类和对象)