來自CSDN A_B_C_ABC 網友
KMP字符串模式匹配通俗點說就是一種在一個字符串中定位另一個串的高效算法。
簡單匹配算法的時間複雜度爲O(m*n)。
KMP匹配算法可以證明它的時間複雜度爲O(m+n)。
一. 簡單匹配算法
int Index_BF ( char S[], char T[], int pos )
{
/* 若串 S 中從第pos(S 的下標0≤pos<StrLength(S))個字符
** 起存在和串 T 相同的子串,則稱匹配成功,返回第一個
** 這樣的子串在串 S 中的下標,否則返回 -1 */
int i = pos, j = 0;
while ( S[i+j] != '\0'&& T[j] != '\0')
{
if ( S[i+j] == T[j] )
{
j ++; // 繼續比較後一字符
}
else
{
i ++; j = 0; // 重新開始新的一輪匹配
}
}
if ( T[j] == '\0')
return i; // 匹配成功 返回下標
else
return -1; // 串S中(第pos個字符起)不存在和串T相同的子串
} // Index_BF