您的位置:首页 > 理论基础 > 数据结构算法

字符串-朴素的模式匹配算法

2017-09-20 23:19 363 查看
字符串的模式匹配算法的功能:

用于子串的定位操作;

该算法的思路:

主串作为外层循环,每一个字符作为子串开头;同时,子串作为内层循环;

int FindIndex(const char* s1, const char* s2)
{
if (!s1 || !s2) return -1;

int i = 0;
int j = 0;

//如果主串没有结束,且子串也没有结束
while (*(s1 + i) != '\0' && *(s2 + j) != '\0')
{
//两字符相等,则继续
if (*(s1 + i) == *(s2 + j))
{
++i;
++j;
}
else
{
//如果字符不相等,则主串的i,回到上次匹配开头的下一个位置
i = i - j + 1;
j = 0;
}
}

if (*(s2 + j) == '\0')
{
return i - j;
}
else
{
return -1;
}
}

int main()
{
char *s1 = "helloworld";
char *s2 = "world";

//主串包含有子串
int index = FindIndex(s1, s2);
printf("%s of %s's index : %d\n", s1, s2, index);

//主串不包含子串
s1 = "hello";
s2 = "java";
index = FindIndex(s1, s2);
printf("%s of %s's index : %d\n", s1, s2, index);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 数据结构 字符串