两条语句交换位置,输出结果不同
#include
#include<string>
using namespace std;
void index_BF(string S,string T)
{
int i=0,j=0;
while(i<S.size())
{
if(S[i]==T[j]){i++;j++;}//依次向下匹配
else {i=i-j+1;j=0;}//主串模式串回溯重新开始匹配
if(j>=T.size())
{
cout<T.size()<<" ";
i=i-j+1;j=0;
}
}
}
int main()
{
string a,b;
int x,y;
cin>>x>>a>>y>>b;
index_BF(b,a);
return 0;
}
交换if语句中的i=i-j+1和j=0执行结果不同
第一种:
运行结果:
如果是 j=0;i=i-j+1;的话,这个j还有啥用?你直接写成i=i+1不就得了?明显不一样的啊
其实你根本就用不到 j
,直接不写 j
,写成 i++
不就得了?