IOS|IOS 算法(基础篇) ----- 重复的子字符串

【IOS|IOS 算法(基础篇) ----- 重复的子字符串】很久没更新算法了, 今天更新一期
如果你想知道什么题? 既然你诚心诚意的发问了, 我就大发慈悲的告诉你!
题目: 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。
例如:
s = abab 返回 true s = abcabc 返回 false
s = bbb 返回 true s = aa 返回 true
s = aba 返回 false
接下来我们用一种巧妙方法来解决
两个s拼接, 去掉首尾, 如果截取后的字符串还是含s, 则说明s是个重复字符串
当然 如果s的长度小于1, 直接false
为什么呢? s如果是重复字符串, 则一定有一个子串, 在s中循环出现, 至少2次(1次的话必不是重复字符串)
那么我们将两个s拼接, 则子串至少出现4次, 例如: s = abab 拼接完 abababab
删除首尾, 则对应删除2个子串, 剩下字符串至少包含2个子串并且相邻, 即s, 那么我们判断截取后的字符串是不是包含s即可
例如: 上面 abababab 去首尾 bababa 包含s, 则s是重复字符串
例如: s abc 拼接完 abcabc 去首尾 bcab 不包含s, 则s不是重复字符串

func repeatedSubstringPattern(_ s: String) -> Bool { if s.count <= 1 { return false } var result = s + s; result = String(result[result.index(result.startIndex, offsetBy: 1)..

题目来源:力扣(LeetCode) 感谢力扣爸爸 :)
IOS 算法合集地址

    推荐阅读