KMP 的回退次数是零

一段文本 abababcababcabababc(19 个字符,下标从 0 起)和一个模式 ababc。 数出 KMP 的比较次数,再记下文本指针最远走到哪个下标、回退了几次,和暴力的 39 次放在一起输出。 (本题用 g++ -std=c

开始练习 →

三种算法位置一个不差

一段文本 abababcababcabababc(19 个字符,下标从 0 起)和一个模式 ababc。 把一段字符折成一个数:h = (h × 31 + 字母序号) % 17,a 记 1、b 记 2、c 记 3。 暴力、哈希、KMP 三种

开始练习 →

四个词各跑一次匹配亏在哪

要在一段文本里找四个不同的词。每个词各跑一次 KMP,问题是【0】。

开始练习 →

Trie 在多模式匹配里担什么

第 1 步:一棵空树,只有根 第 2 步:放进 he:h → e 第 3 步:放进 his:h 已有,接 i、s 第 4 步:放进 she:另起一支 第 5 步:h 这一格被两个词共用 · h e i s s h e 把四个词建成一棵 Tr

开始练习 →

同一个位置能命中两个词吗

扫文本时,某个起始位置同时对上了两个词。这种情况【0】。

开始练习 →

一共命中多少处

四个要找的词 he、she、his、hers,一段文本 ushershishe(11 个字符,下标从 0 起)。 运行下面这段程序: #include <iostream> #include <string> #in

开始练习 →

四个词各出现几次

四个要找的词 he、she、his、hers,一段文本 ushershishe(11 个字符,下标从 0 起)。 按 WORDS 里的顺序,输出四个词各自的出现次数: #include <iostream> #include &

开始练习 →

让文本只走一遍

四个要找的词 he、she、his、hers,一段文本 ushershishe(11 个字符,下标从 0 起)。 build 已经写好了。补全 scan:从每个起点顺着树往下走,走到有词结束的节点就记一处命中。 (本题用 g++ -std=

开始练习 →

哪个位置同时命中两个词

四个要找的词 he、she、his、hers,一段文本 ushershishe(11 个字符,下标从 0 起)。 按起始位置把命中归好,找出同时命中不止一个词的那些位置。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

一次扫过对比各扫一遍

四个要找的词 he、she、his、hers,一段文本 ushershishe(11 个字符,下标从 0 起)。 两种做法都写好了。对一下结果,再把两种做法要看的字符数各算出来。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →