问题遇到的现象和发生背景
两条语句交换位置,输出结果不同
问题相关代码,请勿粘贴截图
#include<iostream>
#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<<i-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执行结果不同
第一种:
运行结果:
交换后:
运行结果:
都在if语句中,执行完大括号里的才会继续执行下面的,感觉先后顺序应该不影响呀