RT,赛事代码调了好久硬是没有把最后一个样例调出来:
#include<iostream>
#include<string>
#include<vector>
using namespace std;
bool solve(int K, const string&S, const string&T)
{
int lenS = S.length();
int lenT = T.length();
if (abs(lenS - lenT) > K)return 0;
int i = 0, j = 0;
int dels = 0;
while (i < lenS && j < lenT)
{
if (S[i] == T[j])
{
++i;
++j;
}
else
{
if (K == 0)return 0;
if (i < lenS - 1 && S[i + 1] == T[j])
{
++i;
--K;
}
else if (j < lenT - 1 && S[i] == T[j + 1])
{
++j;
--K;
}
else
{
++dels;
if (dels > K)return 0;
if (i < lenS - 1 && S[i + 1] == T[j])
{
++i;
}
else
{
++j;
}
--K;
}
}
}
int op = K;
while (i < lenS || j < lenT)
{
if (i < lenS)++i;
if (j < lenT)++j;
if (--op < 0)return 0;
}
return 1;
}
int main()
{
int K;
string S, T;
cin >> K >> S >> T;
cout << (solve(K, S, T) ? "Yes" : "No") << endl;
return 0;
}