KMP字符串模式匹配詳解

來自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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章