the sixth day-double pointer-judgment substring
重铸华农荣光 我辈义不容辞
the sixth day-double pointer-judgment substring
#include<iostream>
using namespace std;
const int N=100010;
int a[N],b[N];
int main()
{
int n,m;
cin>>n>>m;
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0;i<m;i++) cin>>b[i];
int l=0,r=m-1;
int i=0,j=n-1;
bool flag=true;
while(i<=j){
while(b[l]!=a[i]&&l<m) l++;
if(l>=m||l>r) {flag=false;break;}
else {i++;l++;}
if(i>j) break;//如果出现i=j进入循环的情况,可能会重复判断
while(b[r]!=a[j]&&j>=0) r--;
if(r<=0||r<l) {flag=false;break;}
else {j--;r--;}
}
if(flag) cout<<"Yes";
else cout<<"No";
return 0;
}
if(r<=0||r<l) {flag=false;break;} 应该是r<0