⚠️ 文本指针一共退了几次、退了多少格

一段文本 abababcababcabababc(19 个字符,下标从 0 起)和一个模式 ababc:比对上了 j 个字符之后才失配,文本指针就要往回退 j 格。数一数退了几次、一共退了多少格: T = "abababcabab

开始练习 →

自己写:暴力匹配

一段文本 abababcababcabababc(19 个字符,下标从 0 起)和一个模式 ababc:补全 brute,输出全部出现位置。

开始练习 →

⚠️ 把比较次数和回退格数一起数出来

一段文本 abababcababcabababc(19 个字符,下标从 0 起)和一个模式 ababc:一次输出三个数:比较次数、回退次数、一共退了多少格。

开始练习 →

字符串哈希是拿来干什么的

把一段字符折算成一个整数,这么做是为了【0】。

开始练习 →

滚动哈希省掉的是什么

窗口往右挪一格时,滚动哈希不用重算,因为它【0】。

开始练习 →

⚠️ 哈希值一样,能直接判定匹配吗

某个窗口的哈希值和模式的一样。这时候【0】。

开始练习 →

模式折出来是多少

把一段字符折成一个数:h = (h * 31 + 字母序号) % 17,a 记 1、b 记 2、c 记 3。 T = "abababcababcabababc" P = "ababc" BASE =

开始练习 →

⚠️ 只比哈希,会挑出几个位置

把一段字符折成一个数:h = (h * 31 + 字母序号) % 17,a 记 1、b 记 2、c 记 3。只比哈希值、不做逐字符确认,数一数会挑出多少个位置: T = "abababcababcabababc" P =

开始练习 →

自己写:把每个窗口的哈希算出来

把一段字符折成一个数:h = (h * 31 + 字母序号) % 17,a 记 1、b 记 2、c 记 3。补全 roll_all,输出哈希值和模式相同的那些位置。

开始练习 →

🔴 加上确认这一步,五个变三个

把一段字符折成一个数:h = (h * 31 + 字母序号) % 17,a 记 1、b 记 2、c 记 3。补上逐字符确认那一步,输出「只比哈希挑出几个」和「确认之后剩几个」。

开始练习 →