重复的子字符串

题面

给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。

示例 1:

输入: "abab"
输出: True

来源:力扣(LeetCode)
链接:leetcode-cn.com/problems/repeated-...

分析

  1. 确定可能的子串长度范围,最小为1,最大为给定串的一半
  2. 给定串长度必为可重复子串长的倍数
  3. 检测其内,间隔值有任意可重复子串子项不成立则直接终止循环
  4. 断言有任意考察重复子串通过,则直接跳出

解法

func repeatedSubstringPattern(s string) bool {
    if len(s)==1 {
        return false
    }
    gap :=1
    rs := false
    for gap <= len(s)/2 {
        if len(s) % gap == 0{
            rs = true
            for i:=0;i<len(s)-gap;i++ {
                if s[i]!=s[i+gap]{
                    rs = false
                    break
                }
            }
            if rs {
                break
            }
        }
        gap++
    }
    return rs
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
pardon110
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
开发者 @ 社科大
文章
133
粉丝
24
喜欢
100
收藏
54
排名:107
访问:8.9 万
私信
所有博文
社区赞助商