题意:给两个字符串s和t,如果能插入一些字符使得s=t,则输出yes,否则输出no。插入规则:在s中选定一个字符c,可以在其后面插入一个字符k,只要k!=c即可。

思路:特殊的情况就是s和t的最长相同字符的前缀不等长,则肯定插不进去,如s="aab",而t="aaab"。还有就是,如果第一个字符就不相同了,输出NO,因为不能在最前面插入(看定义)!

  只要将这个情况排除掉,其他的就好做了,从后面开始,匹配就往前扫,不匹配就在s中插入对应字符,如果s长度超过了t就输出NO,否则到最后肯定YES。

 #include <bits/stdc++.h>
#define pii pair<int,int>
#define INF 0x7f7f7f7f
#define LL long long
using namespace std;
const int N=;
char s[N];
string s1, s2;
bool cal(int len1,int len2)
{
if( s1[]!=s2[] ) return false;
if(len1==len2 && s1==s2 ) return true;
if(len1==len2 && s1!=s2 ) return false; char c=s1[];
int i;
for(i=; i<s1.size() && s1[i]==s2[i] && s1[i]==s1[] ; i++ );//去掉前缀
if(s2[i]==c) return false; //无解 if(i==s1.size()) s1="";
else s1=s1.substr(i);
s2=s2.substr(i); for(int i,j; !s2.empty() ; )
{
i=s2.size()-;
j=s1.size()-;
if( s1.empty() )
{
s1.push_back( s2[i]);
continue;
}
else if( s1[j]==s2[i] ) //相同就删
{
s1.erase(s1.end()-);
s2.erase(s2.end()-);
}
else //不同就插
{
s1.push_back( s2[i]);
}
if(s1.size()>s2.size()) return false;
}
return true;
} int main()
{
//freopen("input.txt", "r", stdin);
int t;
cin>>t;
while(t--)
{
scanf("%s", s );
s1=s;
scanf("%s", s );
s2=s; if( cal(s1.size(), s2.size()) )
puts("Yes");
else
puts("No");
}
return ;
}

AC代码

最新文章

  1. AnjularJS系列3 —— 数据的双向绑定
  2. Python之路,Day8 - Python基础 面向对象高级进阶与socket基础
  3. 远程管理 KVM 虚机 - 每天5分钟玩转 OpenStack(5)
  4. dataRow转化为对象
  5. ZookeeperNet太难用,写了个RetryHelper来进行配套使用
  6. JavaScript之substring()方法讲解
  7. 棒棒的毛笔字PS教程
  8. [转载]Spring Annotation Based Configuration
  9. JAVA JDK1.5-1.9新特性
  10. EasyUI选项卡tab页面处理示例
  11. 微软研究院的分布式云计算框架orleans
  12. Abandoned country
  13. ubuntu忽然不能登录,输入密码正确一直返回登录界面
  14. Use LiveCD to acquire images from a VM
  15. linux、windows系统间传输文件
  16. kubernetes系列08—service资源详解
  17. C++中public/protect/private三种访问权限控制
  18. mysql几种中间件对比
  19. 自己写一个 Hash 表
  20. springboot集成mybatis-generator时候遇到的问题

热门文章

  1. driver, module以及怎么看他们
  2. impdp+network link 跳过expdp直接导入目标库
  3. Watir: 当出现错误提示AutoItX3.dll 没有注册的时候,该怎么处理?
  4. Bootstrap-CL:按钮下拉菜单
  5. View Controller Programming Guide for iOS---(二)---View Controller Basics
  6. ORACLE PL/SQL 实例精解之第四章 条件控制:if 语句
  7. ORACLE PL/SQL 实例精解之第二章 通用编程语言基础
  8. Bid和Ask
  9. bzoj 2131: 免费的馅饼【dp+树状数组】
  10. 洛谷P3537 [POI2012]SZA-Cloakroom(背包)