🔴 平均差不多,最坏差很多

🔴 平均差不多,最坏差很多

两组对照:一组是 n02 那段普通文本 abababcababcabababc 配 ababc,一组是最坏情况(24 个 a 配 6 个 a)。四个数一起输出:普通暴力、普通 KMP、最坏暴力、最坏

阅读更多 →
自己写:把选型写成一个函数

自己写:把选型写成一个函数

三种场景:①一个模式、文本不断来;②几十个词、一段文本;③一个模式、只找一次。按顺序输出各自该用什么。

阅读更多 →
🔴 同样三种情况,KMP 一动不动

🔴 同样三种情况,KMP 一动不动

同一段文本、同样是 4、6、8 个 a 的模式,这次数 KMP 的比较次数: T24 = "a" * 24 def brute_cmp(t, p): c = 0

阅读更多 →
⚠️ 模式越长,暴力涨多少

⚠️ 模式越长,暴力涨多少

同一段文本(24 个 a),模式分别是 4、6、8 个 a。数一数暴力各比了多少次: T24 = "a" * 24 def brute_cmp(t, p): c = 0

阅读更多 →
⚠️ 一次要找几十个词,选哪个

⚠️ 一次要找几十个词,选哪个

一段文本,要同时找出几十个关键词出现在哪儿。该用【0】。

阅读更多 →
一个模式要在很多段文本里反复找,选哪个

一个模式要在很多段文本里反复找,选哪个

模式固定不变,文本一段接一段地来。最划算的是【0】。

阅读更多 →
⚠️ 把「子串」和「子序列」一起交出来

⚠️ 把「子串」和「子序列」一起交出来

一个字符串 abcbdcba(8 个字符)。回文就是正着读和倒着读一样。两个函数都写好了:一个求最长回文子串(中心扩展),一个求最长回文子序列(区间 DP,就是 l1_algo_10 里写过的那个)。

阅读更多 →
⚠️ 两种做法,同一段回文,代价不同

⚠️ 两种做法,同一段回文,代价不同

一个字符串 abcbdcba(8 个字符)。回文就是正着读和倒着读一样。暴力枚举所有子串、和中心扩展,两种做法各试了多少次?结果对得上吗?

阅读更多 →
🔴 只试字符位,偶数长度的回文全丢了

🔴 只试字符位,偶数长度的回文全丢了

拿另一个字符串 abccba 做对照——它整个就是一个回文,而且长度是偶数。把只试字符位的那一版写出来,和正确版一起输出。

阅读更多 →
自己写:中心扩展

自己写:中心扩展

一个字符串 abcbdcba(8 个字符)。回文就是正着读和倒着读一样。c 从 0 数到 2n-2,偶数的 c 落在字符上,奇数的 c 落在缝里。补全往外扩的那两步。

阅读更多 →