思想来源:AcWing 2816. 判断子序列(双指针算法) - AcWing
当a[i]==a[j]的时候,同时向后移:
此时a[i]!=a[j]:
i就不移动了,j继续移动:
相等了就再同时移动:
不相等就只有j移动:
下面的字符串遍历完了,说明下面的是上面的子串
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N],b[N];
int n,m;
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++)cin>>a[i];
for(int j=0;j<m;j++)cin>>b[j];
int i=0;
for(int j=0;j<m;j++) //母串
{
if(i<n&&a[i]==a[j])i++;
}
if(i==n)cout<<"Yes"<<endl; //全部匹配完了
else cout<<"No"<<endl;
return 0;
}