Z函数

image

s = input()
n = len(s)
z = [0] * n
left,right = 0,0
# z[i]表示s和s[i:]的LCP长度,规定z[0] = 0!
for i in range(1,n):
    # 如果在z-box里,那么更新它的z[i]的值!
    if i <= right:
        z[i] = min(z[i - left],right - i + 1)
    # 相当于暴力更新
    while i + z[i] < n and s[z[i]] == s[i + z[i]]:
        # 更新 z-box!
        left,right = i,i + z[i]
        z[i] += 1

print(z)
posted @   gebeng  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· 刚刚!百度搜索“换脑”引爆AI圈,正式接入DeepSeek R1满血版
点击右上角即可分享
微信分享提示