#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#define MAXSIZE 100 // 定义最大字符串长度
// 朴素模式匹配算法函数
// 返回子串在主串中的位置(从0开始计数),如果未找到则返回-1
int naivePatternMatching(char* text, char* pattern)
{
int textLength = strlen(text);
int patternLength = strlen(pattern);
// 遍历主串
for (int i = 0; i <= textLength - patternLength; i++)
{
int j;
// 遍历子串,检查是否匹配
for (j = 0; j < patternLength; j++)
{
if (text[i + j] != pattern[j])
{
// 如果不匹配,则立即退出内层循环
break;
}
}
// 如果内层循环正常结束(即j等于patternLength),则表示匹配成功
if (j == patternLength)
{
return i+1; // 返回匹配开始的位置(从0开始)
}
}
// 未找到匹配项
return -1;
}
int main()
{
char text[MAXSIZE];
char pattern[MAXSIZE];
// 输入主串
printf("请输入主串:\n");
scanf("%s", text);
// 输入子串
printf("请输入子串:\n");
scanf("%s", pattern);
// 调用朴素模式匹配算法函数
int position = naivePatternMatching(text, pattern);
// 输出匹配结果
if (position != -1)
{
printf("子串在主串中的位置是:%d\n", position);
}
else
{
printf("未找到子串。\n");
}
return 0;
}
朴素模式匹配算法
最新推荐文章于 2025-06-26 21:41:00 发布
5613

被折叠的 条评论
为什么被折叠?



