1.0 暴力匹配串算法
思想: 两个指针移动匹配,关键是指针回溯,每次回溯一个位置。
// 暴力匹配算法
int bfString(char* str, char* matchStr)
{
// 匹配的位置
int pos = -1;
// str 串的长度
int len1 = strlen(str);
// matchStr 串的长度
int len2 = strlen(matchStr);
// 指向 str 的指针
int pointStr = 0;
// 指向 matchStr 的指针
int pointMatchStr = 0;
while (len1 > pointStr && len2 > pointMatchStr )
{
// 匹配的情况是 指针往后移动
if (str[pointStr] == matchStr[pointMatchStr])
{
pointStr = pointStr + 1;
pointMatchStr = pointMatchStr + 1;
}
else
{
// 当串不匹配的时候 abcdef abcgh i = 3 j = 3 +1
// pointStr 指针需要回溯 pointMatchStr 也需要回溯
pointStr = pointStr - pointMatchStr + 1;
pointMatchStr = 0;
}
}
// 找到了
if ( len2 == pointMatchStr )
{
return (pointStr - pointMatchStr);
}
return pos;
}