Z box Z algorithm字串匹配

2021-09-29 18:40:51 字數 614 閱讀 1885

z[i]:對於i這個位置和原本的字串的相同字首長度是多少

p +"#" + s——可知對於匹配串 文字串每個位置與其相同的字首

z[0]無效 = 0,用z[k](k < i)來推出z[i]

看看之前算好的z有沒有可以覆蓋當前的i,而且覆蓋右邊界越右越好   l,r是box的邊界

if(沒有之前的zbox能覆蓋) 只好從i這一位暴力列舉處理答案

else if(has) s[i]能被覆蓋 那麼s[i]必然出現在是s[0~z[j] - 1]這一段 j指的是覆蓋得住當前i的最大右邊界的開頭

好的,那麼我們現在就去尋找這個s[i]在原串中的對映的位置,即i - l

此時顯然,在box範圍內的s[i~r]和對映的s[i-l ~ r-l] is same. 這一段的長度是l = r - i + 1

不難看出situation分為兩種:

1.z[i - l] < l 直接可以得出 z[i] = z[i - l]

2.超出的部分只好暴力列舉找到邊界

//len——文字串 len——匹配串

void getz()

z[i] = n;

} else

} }}

Python檢測重複字 部分中華字經重複字檢測

中文去標點符號,中文繁體字轉化簡體字,列表檢測並輸出重複項,list當多個相同值時索引 關於去標點,使用包 zhon,直接pip即可 安裝及使用 關於中文繁簡轉換,安裝opencc python 安裝及使用 coding utf 8 author zhr date 2019 10 25 20 26 ...

監聽套接字 連線套接字

摘要 對於伺服器程式設計中最重要的一步等待並接受客戶的連線,那麼這一步在程式設計中如何完成,accept函式就是完成這一步的。它從核心中取出已經建立的客戶連線,然後把這個已經建立的連線返回給使用者程式,此時使用者程式就可以與自己的客戶進行點到點的通訊了。accept函式等待並接受客戶請求 inclu...

java FileInputStream 位元組流

首先要明白,檔案儲存在硬碟上實質上儲存的都是數字,因此通過fileinputstream中的read 方法讀取的是數字。fileinputstream fis new fileinputstream new file test.txt int x fis.read system.out.printl...