串
串(string)是由零個或多個字符組成的有限序列,又名字符串。
模式匹配
子串的定位操作通常稱作串的模式匹配
1、樸素模式匹配算法
以從主串S=“goodgoogle”中找到T=“google”這個子串的位置。
2、KMP模式匹配算法
如果有多個0和1重複字符的字符串,挨個遍歷的算法是非常糟糕的事件。一個可以大大避免遍歷的算法——KMP算法。如果主串S=“abcdefgab”,匹配的T=“abcdex”。如果用樸素算法的話,前五個字母,兩個字符串完全相等,知道第六個字母,f和x不相等。
按照樸素模式匹配算法,應如上圖的流程2、3、4、5、6。即主串S中當i=2、3、4、5、6時,首字符與子串T的首字符均不等。仔細觀察發現,對於要匹配的子串T來說,"abcdex"首字符"a"與後面的串"bcdex"中任意一個字符都不相等。對於上圖流程1來說,前五位字符分別相等,意味着子串T的首字符"a"不可能與S串的第二位到第五位的字符相等。所以上圖流程2、3、4、5的判斷都是多餘。