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

leetcode459. 重复的子字符串

  • 题目描述
  • 解题思路
  • 执行结果
leetcode 459. 重复的子字符串 .


题目描述

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

示例 1:

输入: s = "abab" 输出: true 解释: 可由子串 "ab" 重复两次构成。 示例 2:

输入: s = "aba" 输出: false 示例 3:

输入: s = "abcabcabcabc" 输出: true 解释: 可由子串 "abc" 重复四次构成。 (或子串 "abcabc" 重复两次构成。)

提示:

1 <= s.length <= 104 s 由小写英文字母组成

来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/repeated-substring-pattern 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路

法1

双指针法:\

  1. 循环是由首字母开始的我们只需要找到字符串之后的首字母的位置开始做循环判断,
  2. 如果中途失败,就重新做下一个首字母的循环判断,直到无法判断循环或者成功的时候返回结果
  • 时间复杂度(O(n))
  • 空间复杂度(O(1))

执行结果

法1

func repeatedSubstringPattern(s string) bool {
    length := len(s)
    for i := 1; i <= length/2; i++ {
        if length%i == 0 {
            sub := s[:i]
            repeat := length / i
            isRepeated := true
            for j := 1; j < repeat; j++ {
                if s[j*i:(j+1)*i] != sub {
                    isRepeated = false
                    break
                }
            }
            if isRepeated {
                return true
            }
        }
    }
    return false
}

执行结果: 通过 显示详情 查看示例代码 添加备注

执行用时: 8 ms , 在所有 Go 提交中击败了 48.79% 的用户 内存消耗: 4.2 MB , 在所有 Go 提交中击败了 73.97% 的用户 通过测试用例: 129 / 129

本文由 mdnice 多平台发布


http://www.kler.cn/a/8176.html

相关文章:

  • Asp.Net FrameWork 4.7.2 WebAPI 使用WebSocket协议
  • redis数据转移
  • Android Studio AI助手---Gemini
  • Unity 3D饼状图效果
  • 计算机毕业设计原创定制(免费送源码):NodeJS+MVVM+MySQL 樱花在线视频网站
  • halcon单相机+机器人*眼在手外标定心得
  • 【学习笔记】启示录 - 打造用户喜爱的产品(阅读摘录)
  • C++ 98/03 应该学习哪些知识19
  • python 实现二叉搜索树的方法有哪些?
  • Unity中将项目通用的公共模块封装成类库dll
  • 如何让chatGPT变成中文-ChatGPT怎么完整输出
  • Spark 之 解析json的复杂和嵌套数据结构
  • 身临其境数字世界:探索VR全景元宇宙展厅
  • 前端学习:HTML链接
  • Linux小黑板(14):基于环形队列的生成消费者模型
  • 4款【新概念APP】对比+免费下载
  • 【开发工程师的运维小知识】docker安装gitlab
  • 【SQL Server】数据库开发指南(一)数据库设计
  • 生成式人工智能所面临的问题有哪些?
  • 苹果6信号不好的快速解决方法
  • 【多线程与高并发(锁)】1、锁的概念、分类和状态
  • Unity最新热更新框架 hybridclr_addressable
  • Obsidian:实现日记记录【设计并使用模板】
  • Linux-Shell设计
  • STM32CubeMXA安装和创建项目
  • CSS 扫盲