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

代码随想录刷题——字符串篇(七)

459.重复的子字符串

移动匹配法:

bool repeatedSubstringPattern(string s) {# 组成新串string t=s+s;# 去除首尾字符t.erase(t.begin());t.erase(t.end()-1);# 判断中间是否有与原字符串相等的子串if(t.find(s)!=npos) return true;return false;}

KMP法:

# 获取next数组
void getNext(int* next,const string& s){next[0]=0;int i=0;for(int j=1;j<s.size();j++){while(i>0&&s[i]!=s[j]){i=next[i-1];}if(s[i]==s[j]){i++;}next[j]=i;}} 
bool repeatedSubstringPattern(string s) {vector<int> next(s.size());getNext(&next[0], s);int n=s.size();# 如果next数组最后一位不为0则存在最长相等前后缀,再判断最长重复子串的长度# 是否可以被字符串长度整除即可if(next[n-1]!=0 && n%(n-next[n-1])==0) return true;return false;}

其他:

(1)移动匹配法非常巧妙,相当于把一个字符串写两遍去掉首尾字符(因为一个字符串如果自循环构成长度一定大于等于2),再查找原字符串是否仍存在,如果存在则一定自循环,举个例子(空格是为了好观察):

                s="abc abc abc"

                t=s+s="abc abc abc abc abc abc"

                去掉首位字符后=“bc abc abc abc abc ab"此时由于自循环的缘故,中间部分一定会出现与原始字符串相同的子串,充分必要性的数学证明网站中有

(2)字符串相关:

                a.重载了+运算符

                b. t.find(s)!=string::npos 判断写法,string作用域下的npos

(3)KMP法则是利用最长相等前后缀来找最小重复子串,一个示意图就很清晰:

http://www.dtcms.com/a/338838.html

相关文章:

  • 字符分类函数与字符转换函数
  • 【LeetCode 热题 100】279. 完全平方数——(解法一)记忆化搜索
  • kkfileview预览Excel文件去掉左上角的跳转HTM预览、打印按钮
  • Python爬虫第一课:爬取HTML静态网页小说章节
  • 国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—ARM + FPGA通信案例
  • PicoShare 文件共享教程:cpolar 内网穿透服务实现跨设备极速传输
  • Simulink库文件创建及使用方法
  • 4.Kotlin 集合 Map 所有方法
  • CVPR 2025 | 具身智能 | HOLODECK:一句话召唤3D世界,智能体的“元宇宙练功房”来了
  • 库卡机器人tag焊接保护气体流量控制系统
  • (第五篇)spring cloud之Ribbon负载均衡
  • 主流 3D 模型格式(FBX/OBJ/DAE/GLTF)材质支持与转换操作指南
  • 云存储的高效安全助手:阿里云国际站 OSS
  • ICCV 2025 | 首个3D动作游戏专用VLA模型,打黑神话只狼超越人类玩家
  • iOS 性能监控实践,如何构建从开发到运维的持续优化体系
  • 面试题储备-MQ篇 3-说说你对Kafka的理解
  • 如何用给各种IDE配置R语言环境
  • Halcon联合C# 添加工具类让winform自动根据窗体大小自适应缩放所有控件
  • 知行社黄剑杰:金融跨界,重塑震区救援新章
  • 《基于大数据的全球用水量数据可视化分析系统》用Python+Django开发,为什么导师却推荐用Java+Spring Boot?真相揭秘……
  • sqli-labs通关笔记-第55关 GET数值型注入(括号闭合 限制14次探测机会)
  • 今日行情明日机会——20250819
  • 20.2 QLoRA微调全局参数实战:高点击率配置模板+显存节省50%技巧
  • Linux下Nginx安装及负载均衡配置
  • Python 3.14深度解析:革命性特性与性能优化实践
  • Go高效复用对象:sync.Pool详解
  • Windows内核开发笔记
  • 免费导航规划API接口详解:调用指南与实战示例
  • 一个基于前端技术的小狗寿命阶段计算网站,帮助用户了解狗狗在不同年龄阶段的特点和需求。
  • 数据链路层-网络层-传输层