【Leetcode】1062. Longest Repeating Substring
题目地址:
https://leetcode.com/problems/longest-repeating-substring/
给定一个长nnn字符串sss,求其最长重复子串的长度。
思路是二分 + 字符串哈希。二分答案,答案的范围是[1,n−1][1,n-1][1,n−1],而判断sss是否含一个长kkk的重复子串是容易的,只需看一下所有长kkk子串的哈希值是否有重复出现的即可,这可以用Rolling Hash的技巧。代码如下:
class Solution {public:using UL = unsigned long;int longestRepeatingSubstring(string s) {int n = s.size(), l = 1, r = n - 1;if (l > r) return 0;UL P = 131;auto check = [&](int len) {unordered_set<UL> st;UL pow = 1, ha = 0;for (int i = 0; i < len; i++) {pow = pow * P;ha = ha * P + s[i];}st.insert(ha);for (int i = len; i < n; i++) {ha = ha * P + s[i];ha -= pow * s[i - len];if (st.count(ha)) return true;st.insert(ha);}return false;};while (l < r) {int mid = l + (r - l + 1 >> 1);if (check(mid))l = mid;elser = mid - 1;}return check(l) ? l : 0;}
};
时间复杂度O(nlogn)O(n\log n)O(nlogn),空间O(n)O(n)O(n)。
【Leetcode】1062. Longest Repeating Substring相关推荐
- 【LeetCode】3. Longest Substring Without Repeating Characters
题目: Given a string, find the length of the longest substring without repeating characters. Examples: ...
- 【LeetCode】15.Longest Common Prefix
Write a function to find the longest common prefix string amongst an array of strings. 从字符数组的第一项往后挨个 ...
- 【Leetcode】2246. Longest Path With Different Adjacent Characters
题目地址: https://leetcode.com/problems/longest-path-with-different-adjacent-characters/ 给定一棵 n n n个节点的有 ...
- 【leetcode】521. Longest Uncommon Subsequence I
题目如下: 解题思路:本题有点意思.首先如果输入的两个字符串都为空,那么结果是-1:如果两个字符串长度不一样,那么结果是较长的字符串的长度,因为较长的字符串肯定是自身的子序列,但一定不是较短的字符串的 ...
- 【LeetCode】1655. Distribute Repeating Integers 分配重复整数
一题多解. 首先理解问题,可以抽象为: 有若干物品,大小分别为quantity[i]. 假如某个数字重复x次,可理解为有一个容量为x的背包 要把物品放进背包里,问能不能放完 DFS 暴力解法,直接遍历 ...
- 【LeetCode】【HOT】297. 二叉树的序列化与反序列化(BFS)
[LeetCode][HOT]297. 二叉树的序列化与反序列化 文章目录 [LeetCode][HOT]297. 二叉树的序列化与反序列化 package hot;import java.util. ...
- 【LeetCode】【HOT】76. 最小覆盖子串(滑动窗口)
[LeetCode][HOT]76. 最小覆盖子串 文章目录 [LeetCode][HOT]76. 最小覆盖子串 package hot;public class Solution76 {public ...
- 【LeetCode】剑指 Offer 37. 序列化二叉树
[LeetCode]剑指 Offer 37. 序列化二叉树 文章目录 [LeetCode]剑指 Offer 37. 序列化二叉树 package offer;import java.util.Link ...
- 【LeetCode】剑指 Offer 58 - II. 左旋转字符串
[LeetCode]剑指 Offer 58 - II. 左旋转字符串 文章目录 [LeetCode]剑指 Offer 58 - II. 左旋转字符串 一.字符串切片 二.列表遍历拼接 三.字符串遍历拼 ...
最新文章
- C++的STL队列实现栈
- Zookeeper 生产实践的一些经验分享
- LeetCode 100相同的树101对称二叉树
- AAAI 2021 | 基于动态混合关系网络的对话式语义解析方法
- Mint-Ui的mt-search点击选中
- (1)Deep Learning之感知器
- Python3.6读写串口操作
- acm常见错误-持续更新
- uiswitch样式_iOS - UISwitch 、UISegmentedControl
- Xcode打包后,找不到dSYM文件
- PHP第一季视频教程.李炎恢.学习笔记(五)(第3章 操作符与控制结构(1)(2))
- 学生信息管理系统(数据库)
- 快速排序(萝卜填坑算法)【必会知识】
- qlv转mp4失败 解决方法
- 【Node.js】关于Node.js接口的详解和案例--restful风格接口。案例:添加商品接口,添加员工接口,删除员工接口
- 解决电脑无法通过网线直连海康摄像机的问题
- 使用print.js进行分页打印
- 分享10个实用的软件和网站,我每天都在用
- Roberts边缘检测算子
- 计算机知识传播策划书,关于计算机知识活动的策划书
热门文章
- 终于会给2612A硒鼓加粉了
- iPhone 手机官方查询网站
- 我应该选一所什么学校--所有选择,都应基于你的需要
- 行人检测-LUV颜色空间
- 计算机策略编辑器,组策略编辑器,小编教你组策略编辑器怎么打开
- 笔记本计算机无法启动怎么解决,笔记本突然无法开机的原因_笔记本突然关机无法开机怎么解决-win7之家...
- android简单歌词,《Android_MP3播放器(初学简单版_歌名、歌手、歌词同步显示)》.doc...
- 苹果Macbook经常死机怎么办?
- 转:80%的人没有真正参与组织工作,你还在专制管理吗?
- html光标自动定位到文本框,html元素contenteditable属性如何定位光标和设置光标