卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

實現(xiàn)線性時間匹配的Z算法

Z算法是一種可以實現(xiàn)線性時間匹配的算法,通過前綴串匹配,實現(xiàn)快速匹配。相比于經(jīng)典的KMP算法,Z算法更加易懂和易用。下面將介紹Z算法的原理以及代碼演示。 Z算法原理Z算法通過前綴串搜索,即一個字符串i

Z算法是一種可以實現(xiàn)線性時間匹配的算法,通過前綴串匹配,實現(xiàn)快速匹配。相比于經(jīng)典的KMP算法,Z算法更加易懂和易用。下面將介紹Z算法的原理以及代碼演示。

Z算法原理

Z算法通過前綴串搜索,即一個字符串i位開始的前綴串與該字符串前綴串匹配的最大長度。具體步驟如下:

1. 從i1位開始,比對前綴串,使用LR限制閱讀間隔。

2. L-R即從0,也就是第一位字符開始匹配。

3. 若i大于R即匹配失敗,從RLi開始重新匹配。

4. 若小于,可從前面匹配信息獲得相關(guān)信息。

Z算法代碼演示

```python

Z_Algorithm

def getZ(str):

import numpy as np

z (len(str), dtypeint64)

n len(str)

l r 0

for i in range(1, len(str)):

if i > r:

l r i

while r

r 1

z[i] r-l

r - 1

else:

k i - l

if z[k] < r-i 1:

z[i] z[k]

else:

l i

while r < n and str[r-l] str[r]:

r 1

z[i] r - l

z[0] len(str)

return z

concat pattern and text

def search(p,t):

concat p '$' t

z getZ(concat)

for i in range(len(z)):

if z[i] len(p):

print('Pattern found at index:', i-len(p)-1)

```

以上是關(guān)于Z算法的原理和代碼演示,希望能夠幫助您更好地理解并應用這一線性時間匹配算法。

標簽: