字符串匹配
/*
暴力
将目标串s的第一个字符和模式串T的第一个字符进行匹配
相等,则比较s的第二个和T的第三个
不想等,比较s的第二个和T的第一个
如此循环
O(m*n)
*/
#include<bits/stdc++.h>
using namespace std;
int BF(char *str,char *sub) { //str:主串 sub:子串
//为什么指针
if(str==NULL||sub==NULL) {
return -1;
}
int strLen=strlen(str);
int subLen=strlen(sub);
int i=0,j=0,index=0;
while(i<strLen&&j<subLen) {
if(str[i]==sub[j]) {
i++;
j++;
} else {
//回退
i = i-j+1;
j=0;
}
}
if(j==subLen) {
return i-j;
}
//最后怎么判断找到没有呢?
return -1;
}
int main() {
printf("%d\n",BF("ababcabcdabcde","abcd"));
return 0;
}
为什么我明明想要传入的是字符串,为什么函数里面是char * str?
printf("%d\n",BF("ababcabcdabcde","abcd"));
int BF(char *str,char *sub) { //str:主串 sub:子串
请看另一篇