当前位置:网站首页>Simulation volume leetcode [general] 1062 Longest repeating substring
Simulation volume leetcode [general] 1062 Longest repeating substring
2022-07-06 06:17:00 【Encounter simulation volume】
Summary : Simulation volume Leetcode Summary of questions
1062. Longest repeated substring
Given string S, Find the length of the longest repeating substring . If there is no duplicate substring, it returns 0.
Example 1:
Input :“abcd”
Output :0
explain : No repeating substrings .
Example 2:
Input :“abbaba”
Output :2
explain : The longest repeating substring is “ab” and “ba”, Each occurrence 2 Time .
Example 3:
Input :“aabcaabdaab”
Output :3
explain : The longest repeating substring is “aab”, appear 3 Time .
Example 4:
Input :“aaaaa”
Output :4
explain : The longest repeating substring is “aaaa”, appear 2 Time .
Tips :
character string S Only from ‘a’ To ‘z’ Small English letters .
1 <= S.length <= 1500
source : Power button (LeetCode)
link :https://leetcode-cn.com/problems/longest-repeating-substring
Copyright belongs to the network . For commercial reprint, please contact the official authority , Non-commercial reprint please indicate the source .
Code :
from leetcode_python.utils import *
class Solution:
def search(self, L: int, a: int, modulus: int, n: int, nums: List[int]) -> str:
""" Rabin-Karp with polynomial rolling hash. Search a substring of given length that occurs at least 2 times. @return start position if the substring exits and -1 otherwise. """
# compute the hash of string S[:L]
h = 0
for i in range(L):
h = (h * a + nums[i]) % modulus
# already seen hashes of strings of length L
seen = {
h}
# const value to be used often : a**L % modulus
aL = pow(a, L, modulus)
for start in range(1, n - L + 1):
# compute rolling hash in O(1) time
h = (h * a - nums[start - 1] * aL + nums[start + L - 1]) % modulus
if h in seen:
return start
seen.add(h)
return -1
def longestRepeatingSubstring(self, S: str) -> str:
n = len(S)
# convert string to array of integers
# to implement constant time slice
nums = [ord(S[i]) - ord('a') for i in range(n)]
# base value for the rolling hash function
a = 26
# modulus value for the rolling hash function to avoid overflow
modulus = 2 ** 24
# binary search, L = repeating string length
left, right = 1, n
while left <= right:
L = left + (right - left) // 2
if self.search(L, a, modulus, n, nums) != -1:
left = L + 1
else:
right = L - 1
return left - 1
def test(data_test):
s = Solution()
data = data_test # normal
# data = [list2node(data_test[0])] # list turn node
return s.getResult(*data)
def test_obj(data_test):
result = [None]
obj = Solution(*data_test[1][0])
for fun, data in zip(data_test[0][1::], data_test[1][1::]):
if data:
res = obj.__getattribute__(fun)(*data)
else:
res = obj.__getattribute__(fun)()
result.append(res)
return result
if __name__ == '__main__':
datas = [
[],
]
for data_test in datas:
t0 = time.time()
print('-' * 50)
print('input:', data_test)
print('output:', test(data_test))
print(f'use time:{
time.time() - t0}s')
remarks :
GitHub:https://github.com/monijuan/leetcode_python
CSDN Summary : Simulation volume Leetcode Summary of questions
You can add QQ Group communication :1092754609
leetcode_python.utils See the description on the summary page for details
First brush questions , Then generated by script blog, If there is any mistake, please leave a message , I see it will be revised ! thank you !
边栏推荐
- VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator
- PAT(乙级)2022年夏季考试
- On weak network test of special test
- LeetCode 739. 每日温度
- [postman] the monitors monitoring API can run periodically
- Digital triangle model acwing 1015 Picking flowers
- B - The Suspects
- G - Supermarket
- Isam2 and incrementalfixedlagsmooth instructions in gtsam
- Overview of three core areas of Mathematics: algebra
猜你喜欢
随机推荐
Nodejs realizes the third-party login of Weibo
JWT-JSON WEB TOKEN
【Postman】Collections配置运行过程
Interface test: what are the components of the URL in fiddler
What are the test sites for tunnel engineering?
异常检测方法总结
F - True Liars (种类并查集+DP)
CoordinatorLayout+NestedScrollView+RecyclerView 上拉底部显示不全
Idea new UI usage
Pat (Grade B) 2022 summer exam
Caused by:org. gradle. api. internal. plugins . PluginApplicationException: Failed to apply plugin
F - true liars (category and search set +dp)
On weak network test of special test
MySQL之基础知识
[C language] string left rotation
黑猫带你学UFS协议第18篇:UFS如何配置逻辑单元(LU Management)
曼哈顿距离和-打印菱形
Customize the gateway filter factory on the specified route
把el-tree选中的数组转换为数组对象
php使用redis实现分布式锁









