题意:给两个字符串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代码

HDU 5414 CRB and String (字符串,模拟)的更多相关文章

  1. HDU 5414 CRB and String (2015年多校比赛第10场)

    1.题目描写叙述:点击打开链接 2.解题思路:本题要求推断字符串s是否能通过加入若干个字符得到字符串t. 首先,能够知道,s必须是t的一个子串(注意:不是连续子串). 第二.因为插入的新字符和它前面的 ...

  2. HDOJ 5414 CRB and String 模拟

    CRB and String Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) T ...

  3. HDU 3973 AC's String 字符串哈希

    HDU 3973 通过哈希函数将一个字符串转化为一个整数,通过特定的方式可以使得这个哈希值几乎没有冲突(这就是关键之处,几乎没有视为没有= =!, 其实也可以考虑实现哈希冲突时的处理,只是这道题没必要 ...

  4. 构造 HDOJ 5414 CRB and String

    题目传送门 题意:给两个字符串s,t,可以在s字符串任意位置后面插入字符c(与前面的不同),问是否能够将s转换为t字符串 构造:首先lens > lent 或者 s[1] != t[1] 一定是 ...

  5. hdu 2629 Identity Card (字符串解析模拟题)

    这题是一个字符串模拟水题,给12级学弟学妹们找找自信的,嘿嘿; 题目意思就是要你讲身份证的上的省份和生日解析出来输出就可以了: http://acm.hdu.edu.cn/showproblem.ph ...

  6. HDU 5842 Lweb and String(Lweb与字符串)

    p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...

  7. HDU_5414 CRB and String 【字符串】

    一.题目 CRB and String 二.分析 对于这题,读懂题意非常重要. 题目的意思是在$s$的基础上,按题目中所描述的步骤,即在$s$中任意选择一个字符$c$,在这个字符后面添加一个不等于$c ...

  8. HDU-5414 CRB and String

    http://acm.hdu.edu.cn/showproblem.php?pid=5414 题意:给定字符串s和t,可以在s里面选一个字符c,然后任选一个字符d(d!=c)将d插入到c的后面,问能不 ...

  9. 用字符串模拟两个大数相加——java实现

    问题: 大数相加不能直接使用基本的int类型,因为int可以表示的整数有限,不能满足大数的要求.可以使用字符串来表示大数,模拟大数相加的过程. 思路: 1.反转两个字符串,便于从低位到高位相加和最高位 ...

随机推荐

  1. VM 下安装ghost版系统

    一.首先分区,并激活主分区 二.设置cd-rom的接口为IDE(这项看情况来设置,如果提示 "units specified don't exist, SHSUCDX can't insta ...

  2. Ruby nokogiri 解析xml的简单实例

    require 'nokogiri'XML_FILE = "C:\\Users\\chenpassion\\Desktop\\20130806.xml"xml = Nokogiri ...

  3. CoreGpaphics

    CoreGpaphics基本应用 CGAffineTransformMake开头的函数 是基于最初始的位置来变化的 带有CGAffineTransform参数是基于CGAffineTransform的 ...

  4. CMake 手册详解(二十)

    SirDigit CMake 手册详解(二十) CMD#51: list 列表操作命令. list(LENGTH <list> <output variable>) list( ...

  5. 详述IntelliJ IDEA插件的安装及使用方法(图解)

    intellij idea是一款非常优秀的软件开发工具,它拥有这强大的插件体系,可以帮助开发者完成很多重量级的功能.今天,我们来学习一下如何安装和卸载intellij idea的插件. Intelli ...

  6. E20180407-hm

    queue   n. (人或车辆) 行列,长队; 辫子;   vi. (人.车等) 排队等候;   vt. (使) 排队,列队等待; compatible  adj. 兼容的,相容的; 和谐的,协调的 ...

  7. Codeforces - 702A - Maximum Increase - 简单dp

    DP的学习计划,刷 https://codeforces.com/problemset?order=BY_RATING_ASC&tags=dp 遇到了这道题 https://codeforce ...

  8. CSU_1216【异或最大值】

    转自:http://blog.csdn.net/fuyukai/article/details/50366133 题目简述: 经典题目,求一个数组中两个数异或运算的最大值.题目极其简单,但是要求的复杂 ...

  9. Centos 搭建Mysql-Proxy 读写分离

    Mysql 读写分离 主:192.168.153.130 从:193.168.153.131 Mysql-Proxy:193.168.153.132 这里省略mysql主从同步,如果有需要,请查看:M ...

  10. Python基础知识(1)

    Python 3 1:print:输出信息    例子:   ( 所有的标点符号都要是英文状态下输入,要不然会报错) print(“hello world”) 2:注意 : python 和 pyth ...