文章目录
1. Sunday 算法介绍
「Sunday 算法」 是一种在字符串中查找子串的算法,是 Daniel M.Sunday 于1990年提出的字符串模式匹配算法。
Sunday 算法思想:对于给定文本串
T
与模式串p
,先对模式串p
进行预处理。然后在匹配的过程中,当发现文本串T
的某个字符与模式串p
不匹配的时候,根据启发策略,能够尽可能的跳过一些无法匹配的情况,将模式串多向后滑动几位。
Sunday 算法思想跟 Boyer Moore 算法思想类似。不同的是,Sunday 算法匹配顺序是从左向右,并且在模式串 p
匹配失败时关注的是文本串 T
中参加匹配的末尾字符的下一位字符。当文本串 T
中某个字符跟模式串 p
的某个字符不匹配时,可以将模式串 p
快速向右移动。
遇到不匹配字符时,可以根据以下两种情况向右快速进行移动:
- 情况 1:文本串
T
中与模式串p