匹配(相等,或者其他关系)两个数组,其实都是用指针(i,j或者纯粹的指针),指向下标为0的两个数组
如果,匹配成功,则两个数组都同时移动++,值得注意的是,不相等的情况下
如果,匹配不相等,按照暴力解法,BF暴力算法来说(字符串,但似乎用到数组也没什么问题)。在这里为了方便,给大数组称之为A数组,小数组称之为B数组
匹配不相等时,此时很容易联想到,小数组B数组,的指针肯定要从头开始,也就是下标为0的位置开始,而大数组,则是从上一次位置的下一个开始。也就是如果A数组上次是从0开始的,那么这一次要从0+1开始。
这里所说的小数组从0开始,是BF暴力算法的关键,后续所说的KMP,则是对这个进行改善,也就是不跳到0,跳到某个下标开始,这样子时间复杂度会大大减少(一般来说)
#include <iostream>
using namespace std;
int main() {
string s1 = "abcabdd";
string s2 = "abd";
int len_s1 = s1.length();
int len_s2 = s2.length();
int j; //这里是为了方便后续检测,所以初始化在这里
//注意这里是i<=len,有=
for(int i=0;i<=len_s1-len_s2;i++) {
for(j=0;j<len_s2;j++) {
if(s1[j+i]!=s2[j]) {
break;
}
}
if(j==len_s2) {
cout << i;
}
}
return 0;
}