


























By Long Luo
今天 LeetCode CN 的每日一题是 1668. 最大重复子字符串 ,本文是该题的题解,同时发表在 这里 。
这道题有好几个方法:
API 方法最简单,但 KMP 算法比较复杂。看了一些题解里的暴力解法,大多数人的暴力解法写的太复杂。我自己写该题暴力解法也写了 \(3\) 个版本,前 \(2\) 个版本也很复杂,逐渐优化为目前的简洁优雅版本。
暴力解法使用 \(2\) 个循环,第 \(1\) 个循环,遍历 \(\textit{sequence}\) 中的每个字符,判断是否和 \(\texttt{word.charAt(0)}\) 相同,相同的话的进入下一步;
使用一个索引 \(j\) ,\(0 \le j \le len - i\) ,而这里 \(\textit{word}\) 字符索引可以使用 \(j \mod wLen\) 来获取,这是暴力解法中最优雅的地方。如果遇到不相同的字符,跳出循环。
最后更新最大重复子字符串,就是 \(\textit{ans}\) 和 \(j / wLen\) 的更大值。
中间其实还可以剪枝,但由于数据量比较小,就不加了。
代码如下所示:
1 | class Solution { |
All suggestions are welcome. If you have any query or suggestion please comment below. Please upvote👍 if you like💗 it. Thank you:-)
Explore More Leetcode Solutions. 😉😃💗
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。