题目描述
大意
字符串s
中中的字母可以当backspace
使用,问字符串s
能否通过恰当的的删除操作得到字符串t
分析
- 选择一个字符作为删除,出第一个字符最少要损失两个字符,即它本身与其前面的字符。
- 如果从后向前找的话,无论前边剩多少不需要的字符都可以统统删掉。
- 遍历每个字符,匹配不成功时作为
backspace
连带着前一位删除(后边的已经匹配) - 判断最后是否能找到所有匹配的字符
代码
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int n, m, k;
string s, t;
void solve()
{
cin >> s >> t;
int l1 = s.size() - 1, l2 = t.size() - 1;
while(l1 >= 0)
{
if(s[l1] == t[l2])
{
l1 --;
l2 --;
}
else l1 -= 2;
}
if(l2 == -1) puts("YES");
else puts("NO");
}
int main()
{
cin >> k;
while(k --)
{
solve();
s.clear(), t.clear();
}
return 0;
}