字符串暴力匹配
#include <stdio.h>
#include <stdlib.h>
typedef struct myString {
char* data;
int len;
}myString;
myString* initMyString() {
myString* s = (myString*)malloc(sizeof(myString));
s->data = NULL;
s->len = 0;
return s;
}
void myStringAssign(myString* s, char* data) {
if (s->data) {
free(s->data);
s->data = NULL;
}
char* temp = data;
int len = 0;
while (*temp) {
len++;
temp++;
}
s->len = len;
temp = data;
s->data = (char*)malloc(sizeof(char)*(len + 1));
for (int i = 0; i < len; i++) {
s->data[i] = *temp;
temp++;
}
}
void printMyString(myString* s) {
for (int i = 0; i < s->len; i++) {
printf("%c ", s->data[i]);
}
printf("\n");
}
void myStringForceMatch(myString* master, myString* sub) {
int i = 0;
int j = 0;
while (i < master->len&&j < sub->len) {
if (master->data[i] == sub->data[j]) {
i++;
j++;
if (j == sub->len) {
printf("success\n");
}
}
else {
i = i - j + 1;
j = 0;
}
}
if (j != sub->len) {
printf("fail\n");
}
}
void test() {
myString* master = initMyString();
myString* sub1 = initMyString();
myString* sub2 = initMyString();
myStringAssign(master, "abcabd");
printMyString(master);
myStringAssign(sub1, "abd");
printMyString(sub1);
myStringAssign(sub2, "abe");
printMyString(sub2);
myStringForceMatch(master, sub1);
myStringForceMatch(master, sub2);
}
int main() {
test();
return 0;
}