本题是很显然的双指针算法,一直移动,直达不匹配为止
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
const int N = 200010;
int t,n,m;
char a[N],b[N];
int main(void)
{
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
scanf("%s%s",a+1,b+1);
int cnt=n; // 可能存在完全匹配的情况
for(int i=1,j=1;i<=n;i++,j++)
{
while(j<=m&&a[i]!=b[j]) j++;
if(j>m)
{
cnt = i-1;
break;
}
}
printf("%d\n",cnt);
}
return 0;
}