当前位置: 首页 > news >正文

459. 重复的子字符串【力扣】——kmp拼接字符串解法

在这里插入图片描述

常规kmp解答

class Solution {
public:void getNext(int *next,string s){int j=0;next[0]=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);if(next[s.size()-1]!=0 && s.size()%(s.size()-next[s.size()-1])==0){return true;}return false;}// 若 s="abcabcabc",则next[]=[0,0,0,1,2,3,4,5,6]// next数组记录的时相同字符串的长度
};

拼接字符串解法

我看评论区一个大佬的理解___大佬链接
大佬的思路:

解题过程
1、如果一个字符串当中有重复的子串,那么把这个字符串拼接,并且去掉头字符和尾字符,这个拼接的字符串肯定包含原字符串;如果不包含则不含有重复的子字符串
2、技巧:拼接原始字符串,去掉头字符,查找原始字符串,如果返回的位置不是拼接的位置,就含有重复的子字符串----拼接位置即匹配结束

简单题,一般不会让手写KMP算法,但是调用API,底层用的是KMP算法,因此时间复杂度和空间复杂度都是O(N)

class Solution {
public:bool repeatedSubstringPattern(string s) {// 时间复杂度O(N),空间复杂度O(N)return (s + s).find(s, 1) != s.size();}
};

大佬链接
459. 重复的子字符串【力扣】

http://www.lryc.cn/news/521230.html

相关文章:

  • fpga 的时钟管理模块pll 跟 dcm
  • USB 驱动开发 --- Gadget 驱动框架梳理(一)
  • 1Hive概览
  • 【Web安全】SQL 注入攻击技巧详解:UNION 注入(UNION SQL Injection)
  • IoTDB 常见问题 QA 第三期
  • RabbitMQ---消息确认和持久化
  • 《鸿蒙Next旅游应用:人工智能赋能个性化与智能导览新体验》
  • 微信小程序获取当前页面路径,登录成功后重定向回原页面
  • 【9.2】Golang后端开发系列--Gin路由定义与实战使用
  • 【微信小程序】let和const-综合实训
  • 图匹配算法(涵盖近似图匹配)
  • java线程——Thread
  • MySQL8.0新特性
  • Oracle EBS GL定期盘存WIP日记账无法过账数据修复
  • 【绝对无坑】Mongodb获取集合的字段以及数据类型信息
  • 【Git版本控制器--1】Git的基本操作--本地仓库
  • C++并发编程之无锁数据结构及其优缺点
  • Ubuntu上,ffmpeg如何使用cuda硬件解码、编码、转码加速
  • rclone,云存储备份和迁移的瑞士军刀,千字常文解析,附下载链接和安装操作步骤...
  • Ubuntu | 系统软件安装系列指导说明
  • 队列(算法十三)
  • vLLM私有化部署大语言模型LLM
  • OpenAI Whisper:语音识别技术的革新者—深入架构与参数
  • 基于当前最前沿的前端(Vue3 + Vite + Antdv)和后台(Spring boot)实现的低代码开发平台
  • 【Rust】错误处理机制
  • Logback日志技术
  • 9分布式微服务架构
  • Leecode刷题C语言之统计重新排列后包含另一个字符串的子字符串数目②
  • HTML和CSS相关的问题,为什么页面加载速度慢?
  • LiveGBS流媒体平台GB/T28181常见问题-没有收到视频流播放时候提示none rtp data receive未收到摄像头推流如何处理?