B. Prefiquence
You are given two binary strings a and b. A binary string is a string consisting of the characters '0' and '1'.
Your task is to determine the maximum possible number k such that a prefix of string a of length is a subsequence of string b.
A sequence a is a subsequence of a sequence b if aa can be obtained from b by the deletion of several (possibly, zero or all) elements.
Input
The first line consists of a single integer t (1≤t≤104) — the number of test cases.
The first line of each test case contains two integers n and m (1≤n,m≤2⋅105) — the length of string a and the length of string b, respectively.
The second line of each test case contains a binary string a of length n.
The third line of each test case contains a binary string b of length m.
It is guaranteed that the sum of values nn over all test cases does not exceed 2⋅105. Similarly, the sum of values m over all test cases does not exceed 2⋅105.
Output
For each test case, output a single number — the maximum k, such that the first k characters of a form a subsequence of b.
题干大意:
这道题,如果划为最本质的题型的话,这就是一道字符串的匹配问题,子串问题,看看a是不是b的子串,不过这里的a,指的并不是题干直接给你的a,而是a的前缀,a的前k个是不是b的子串,k尽可能的大,就是a作为子串和b匹配的最大长度
代码实现:
#include<bits/stdc++.h>
using i64=long long;
void solve()
{
int n,m;
std::cin>>n>>m;
std::string a,b;
std::cin>>a>>b;
int ans=0;
for(int i=0;i<m;i++)
{
if(ans<n && a[ans]==b[i])
{
ans++;
}
}
std::cout<<ans<<"\n";
}
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int t;
std::cin>>t;
while(t--)
{
solve();
}
return 0;
}