用C语言实现串的简单模式匹配算法
时间: 2024-05-29 12:11:56 浏览: 89
#include <stdio.h>
#include <string.h>
/* 简单模式匹配算法 */
int simpleMatch(char *s, char *p) {
int i, j;
int sLen = strlen(s);
int pLen = strlen(p);
/* i 指向 s 的当前位置,j 指向 p 的当前位置 */
for (i = 0, j = 0; i < sLen && j < pLen; ) {
if (s[i] == p[j]) {
/* 匹配成功,继续匹配下一个字符 */
i++;
j++;
} else {
/* 匹配失败,回溯到上一个位置重新匹配 */
i = i - j + 1;
j = 0;
}
}
/* 如果 j 已经到达 p 的末尾,说明匹配成功 */
if (j == pLen) {
return i - j;
} else {
return -1;
}
}
int main() {
char s[] = "hello world!";
char p[] = "world";
int pos;
pos = simpleMatch(s, p);
if (pos == -1) {
printf("未找到匹配的子串\n");
} else {
printf("匹配成功,子串起始位置为:%d\n", pos);
}
return 0;
}
阅读全文