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

C语言 | Leetcode C语言题解之第459题重复的子字符串

题目:

题解:

bool kmp(char* query, char* pattern) {int n = strlen(query);int m = strlen(pattern);int fail[m];memset(fail, -1, sizeof(fail));for (int i = 1; i < m; ++i) {int j = fail[i - 1];while (j != -1 && pattern[j + 1] != pattern[i]) {j = fail[j];}if (pattern[j + 1] == pattern[i]) {fail[i] = j + 1;}}int match = -1;for (int i = 1; i < n - 1; ++i) {while (match != -1 && pattern[match + 1] != query[i]) {match = fail[match];}if (pattern[match + 1] == query[i]) {++match;if (match == m - 1) {return true;}}}return false;
}bool repeatedSubstringPattern(char* s) {int n = strlen(s);char k[2 * n + 1];k[0] = 0;strcat(k, s);strcat(k, s);return kmp(k, s);
}

http://www.mrgr.cn/news/43670.html

相关文章:

  • PMP--冲刺题--解题--11-20
  • Anaconda的安装与环境设置
  • 【AI自然语言处理应用】通过API调用通义晓蜜CCAI-对话分析AIO应用
  • 【分布式微服务云原生】深入剖析Redis缓存问题及其解决方案
  • Python网络编程:开启你的网络之旅
  • 基于Springboot+Android的的电子书阅读器系统的设计与实现(含源码+数据库)
  • C++ | Leetcode C++题解之第459题重复的子字符串
  • 设计模式、系统设计 record part03
  • stm32 使用 rt-thread 引脚PIN中断设置边沿触发问题
  • 付费计量系统数据元素(Data elements)
  • llm接口高可用工程实践(尽快关注我,以后这些文章将只对粉丝开放)
  • WSL2Linux 子系统(十二)
  • we3.0里的钱包是什么?
  • CANoe_TestModule截图功能TestReportAddWindowCapture
  • HTML5 新元素
  • 【C++】关键字+命名空间
  • 并查集——从LeetCode题海中总结常见套路
  • C# 文件与文件夹操作指南:深入探索流、文件流及文件夹管理
  • 查缺补漏----IP通信过程
  • Linux下静态库与动态库制作及分文件编程