重複的子字串

pardon110發表於2020-08-24

題面

給定一個非空的字串,判斷它是否可以由它的一個子串重複多次構成。給定的字串只含有小寫英文字母,並且長度不超過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 協議》,轉載必須註明作者和本文連結

相關文章