首页 >

Python中的孙子算法详解 |python find多个

python 字典合并字典,python线程暂停,python中百分比怎么,python写程序平台,北邮python期末考试,python 框框,python three sum,sqlserver for python,java 还是Python,python宝塔开源,python find多个Python中的孙子算法详解 |python find多个

孙子算法是一种字符串匹配算法,用于在一个长文本中查找一个短字符串的位置。

为什么要使用孙子算法?

),孙子算法更加高效。

如何实现孙子算法?

孙子算法主要分为两个步骤预处理和匹配。

预处理是指在短字符串中构建一个后缀数组和一个好后缀规则数组。

后缀数组是指将短字符串的所有后缀按字典序排序后得到的数组。对于短字符串”ababac”,其后缀数组为[“a”, “ab”, “abac”, “ac”, “b”, “bac”]。

好后缀规则数组

好后缀规则数组是指对于每一个后缀,找到其在短字符串中匹配的长后缀和长前缀。对于短字符串”ababac”,其好后缀规则数组为

后缀 | 长后缀 | 长前缀

—- | ——- | ——-

c | 无 | “c”

ac | “c” | 无

bac | “ac” | 无

abac | “c” | “a”

b | 无 | “b”

ab | “b” | “a”

匹配是指在长文本中查找短字符串的位置。

匹配的过程分为两个步骤坏字符规则和好后缀规则。

坏字符规则

坏字符规则是指在长文本中从右往左查找短字符串,如果发现不匹配的字符,则将短字符串向右移动到坏字符的下一个字符。对于长文本”ababacabacab”和短字符串”abac”,当在长文本中匹配到”b”和”o”时,发现不匹配,因此将短字符串向右移动到”b”的下一个字符。

好后缀规则

好后缀规则是指当坏字符规则无法再移动短字符串时,根据好后缀规则数组来移动短字符串。对于长文本”ababacabacab”和短字符串”abac”,当短字符串移动到”ac”时,发现不匹配,因此根据好后缀规则数组来移动短字符串。

综合坏字符规则和好后缀规则,可以在长文本中查找短字符串的位置。

孙子算法是一种高效的字符串匹配算法,可以在长文本中查找短字符串的位置。其核心思想是在短字符串中构建后缀数组和好后缀规则数组,然后根据坏字符规则和好后缀规则在长文本中查找短字符串的位置。


Python中的孙子算法详解 |python find多个
  • Python程序员如何防止数据被修改? |python视频教程reboot
  • Python程序员如何防止数据被修改? |python视频教程reboot | Python程序员如何防止数据被修改? |python视频教程reboot ...

    Python中的孙子算法详解 |python find多个
  • 用python写一个代码,输出指定的名字? |python阶乘代码
  • 用python写一个代码,输出指定的名字? |python阶乘代码 | 用python写一个代码,输出指定的名字? |python阶乘代码 ...

    Python中的孙子算法详解 |python find多个
  • Python通过键输出值(Python字典键值对的访问方法) |python urlparse参数说明
  • Python通过键输出值(Python字典键值对的访问方法) |python urlparse参数说明 | Python通过键输出值(Python字典键值对的访问方法) |python urlparse参数说明 ...