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

Golang | Leetcode Golang题解之第459题重复的子字符串

题目:

题解:

func repeatedSubstringPattern(s string) bool {
    return kmp(s + s, s)
}

func kmp(query, pattern string) bool {
    n, m := len(query), len(pattern)
    fail := make([]int, m)
    for i := 0; i < m; i++ {
        fail[i] = -1
    }
    for i := 1; i < m; i++ {
        j := fail[i - 1]
        for j != -1 && pattern[j + 1] != pattern[i] {
            j = fail[j]
        }
        if pattern[j + 1] == pattern[i] {
            fail[i] = j + 1
        }
    }
    match := -1
    for i := 1; i < n - 1; i++ {
        for 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
}

http://www.kler.cn/news/337374.html

相关文章:

  • Spring Bean 生命周期 五步->七步->十步 扩展学习总结 bean作用域 Scope,手动注册自己new的对象
  • 四川音盛佳云电子商务有限公司助力商家扬帆起航
  • 产品经理内容分享(二):AI产品经理的入门路线图
  • 网页WebRTC电话和软电话哪个好用?
  • 碰撞检测 | 图解视线生成Bresenham算法(附ROS C++/Python/Matlab实现)
  • Sharding 分页原理分析
  • 传感器模块编程实践(二)W5500 SPI转以太网模块简介及驱动源码
  • C#-泛型学习笔记
  • MQ 架构设计原理与消息中间件详解(一)(上一篇只是概述)
  • Github 2024-10-07 开源项目周报 Top15
  • YoloV9改进策略:BackBone改进|CAFormer在YoloV9中的创新应用,显著提升目标检测性能
  • Linux中的网络指令:ping、netstat、watch、pidof、xargs
  • mysql 慢查询日志、设置单条数据最大 packet 插入大小指令
  • 2024Java最新面试题总结(针对于一些小厂、中厂)
  • 通信工程学习:什么是AIOT智能物联网
  • [云] Hands-on with a sample application--DockerCoins 挖矿程序!
  • 外国钞票面值检测系统源码分享
  • 【人工智能】AI人工智能的重要组成部分,深入解析CNN与RNN两种神经网络的异同与应用场景和区别
  • kubernetes get pods的STATUS字段显示ImagePullBackOff 的解决办法
  • UE5数字人制作平台使用及3D模型生成