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 算法合集地址
推荐阅读
- 2020-04-07vue中Axios的封装和API接口的管理
- 画解算法(1.|画解算法:1. 两数之和)
- Guava|Guava RateLimiter与限流算法
- iOS中的Block
- Python基础|Python基础 - 练习1
- 一个选择排序算法
- SG平滑轨迹算法的原理和实现
- Java|Java基础——数组
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片
- 《算法》-图[有向图]