串的模式匹配
1 简单的模式匹配算法
思想: 将主串中所有长度为m的子串依次与模式串对比,直到找到一个完全匹配的子串或所有子串都不匹配为止。
具体代码展示:
1)串的初始化工作
#include<stdio.h>
#define MAXLEN 255 //预定义最大串长
typedef struct {
char ch[MAXLEN];//每一个分量存储一个字符
int length;//串的实际长度
}SString;
// 字符串下标从1开始记录,将ch[0]设置为‘\0’
SString createString() {
SString str;
str.ch[0] = '\0';
str.length = 0;
return str;
}
//赋值操作
void StrAssign(SString& S, char chars[])//生成串S
{
int i = 0;
while (chars[i] != '\0')
{
//第一个位置不用
S.ch[i+1] = chars[i];//将字符串常量的值赋值给S
i++;
}
S.length = i+1;
}
//打印串
void PrintString(SString S) {
if (S.length == 0) {
printf_s("当前串为空");
}
else {
for (int i = 1; i < S.length; i++) {
printf_s("%c", S.ch[i]);
}
printf_s("\n");
}
}
2)简单模式匹配算法实现
int Index(SString S, SString T) {
int i = 1, j = 1;
while (i <= S.length && j <= T.length) {
//相等则指针+1
if (S.ch[i] == T.ch[j]) {
i++;
j