题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5414

题意:给你两个字符串s和t,你能够在字符串s中随意选一个字符c,在该字符c后插入一个字符d(d!=c)。问经过多次此操作,是否能将字符串s转化成字符串t

思路:初读题理解错题意,以为仅仅能在原串的每一个字符后面加入一个不同于这个字符的一个字母,其实能够反复操作,比方,ap。转换成axxp,能够先在a后面加入一个x。就变成了axp。再次操作。在a后面加入一个x,就能够变成axxp。

换句话说:就是保证若第二个字符串t前k个字符都同样,那么第一个字符串s的前k个字符也必须同样(1),剩下的,即使出现插入的字母和前一个字符同样,我们也能够理解成前一个字符是插在前面那个字符的后一个的字符(2),好吧。说晕了。举个栗子:apple,转换成appple,假设第二个p是插入到p后面的字符,依照题目要求是不能够的,可是同一时候我们能够把第一个p当成插在a后面的字符,这样就符合条件了,这就是之前(2)的解释;再举个栗子:apple。转换成aapple。后一个字符串前两个字符都是a,而第一个字符串仅仅有一个a字符。这样第二个字符串中的第二个字符a就必须是a后面插入的。这样明显就不符合条件,ok,(1)解释完了。。

详细操作步骤,就是先保证若字符串t前k个字符都同样,那么字符串s的前k个字符也必须同样,然后在剩下的字符串中按顺序找到第一个字符串的每一个字母即可

代码:

#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <cmath>

#include <ctime>

#include <iostream>

#include <algorithm>

#include <string>

#include <vector>

#include <deque>

#include <list>

#include <set>

#include <map>

#include <stack>

#include <queue>

#include <cctype>

#include <numeric>

#include <iomanip>

#include <bitset>

#include <sstream>

#include <fstream>

#define debug "output for debug\n"

#define pi (acos(-1.0))

#define eps (1e-8)

#define inf 0x3f3f3f3f

#define ll long long

using namespace std;

const int maxn = 100005;

char str1[maxn],str2[maxn];

int l1,l2;

int check()

{

      int i,j;

        for(i=0;i<l2;i++)

        {

            if(str2[i]!=str2[0])

                break;

        }

        for(j=0;j<i;j++)

        {

            if(str1[j]!=str2[j])

                return 0;

        }

        while(j<l1)

        {

            for(;i<l2;i++)

            {

                if(str1[j]==str2[i])

                    break;

            }

            if(i==l2)

                return 0;

            i++;

            j++;

        }

        return 1;

}

int main()

{

    int t;

    scanf("%d",&t);

    while(t--)

    {

        scanf("%s%s",str1,str2);

         l1=strlen(str1);

         l2=strlen(str2);

        if(l2<l1)

        {

            printf("No\n");

            continue;

        }

        if(check())

            printf("Yes\n");

        else

            printf("No\n");

    }

    return 0;

}

多校第十场1009 CRB and String题解的更多相关文章

  1. hdu多校第十场 1009 (hdu6699) Block Breaker bfs/模拟

    题意: 紧密排列的方块因为摩擦力一个一个稳定地挤在一起,但当一个方块的四个邻居中,上下两个至少空缺一个,左右两个至少空缺一个,则这个方块也将掉落. 每次锤掉一个方块,求多少个方块受牵连落下. 题解: ...

  2. 2014多校第十场1004 || HDU 4974 A simple water problem

    题目链接 题意 : n支队伍,每场两个队伍表演,有可能两个队伍都得一分,也可能其中一个队伍一分,也可能都是0分,每个队伍将参加的场次得到的分数加起来,给你每个队伍最终得分,让你计算至少表演了几场. 思 ...

  3. 2014多校第十场1002 || HDU 4972 A simple dynamic programming problem

    题目链接 题意 : 每次无论哪个队投进一个篮球,就记下现在两队比分的差值,问你最后的结果有多少种情况. 思路 : 该题实在是不好理解,最后的结果有多少种情况就是说不管中间过程怎么来的,只要最后结果不一 ...

  4. 牛客多校第十场-D- Rikka with Prefix Sum

    链接:https://www.nowcoder.com/acm/contest/148/D来源:牛客网 Prefix Sum is a useful trick in data structure p ...

  5. 2018杭电多校第六场1009(DFS,思维)

    #include<bits/stdc++.h>using namespace std;int a[100010];char s[20];int zhiren[100010];vector& ...

  6. 杭电多校第十场 hdu6432 Cyclic 打表找规律

    Cyclic Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)Total Su ...

  7. 杭电多校第十场 hdu6435 CSGO 二进制枚举子集

    CSGO Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)Total Subm ...

  8. 杭电多校第十场 hdu6434 Count 欧拉函数打表 快速打表模板

    Problem I. Count Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Other ...

  9. 牛客多校第十场 A Rikka with Lowbit 线段树

    链接:https://www.nowcoder.com/acm/contest/148/A来源:牛客网 题目描述 Today, Rikka is going to learn how to use B ...

随机推荐

  1. 如何使用 Open Live Writer 插入原图

    博客园的指南里写了使用 Open Live Writer 插入原图.去掉阴影并设置为默认设置的步骤,但是我还是找了好久,最后通过别的文章加上摸索才知道了如何设置为原图.这里给出详细地图片: 首先,插入 ...

  2. 搭建ss总结

    今天晚上做的事情: 1. https://www.vultr.com/ 购买vps 2. ssh连接到服务器 参照网上帖子安装 https://blog.csdn.net/littlepig19930 ...

  3. How Javascript works (Javascript工作原理) (四) 事件循环及异步编程的出现和 5 种更好的 async/await 编程方式

    个人总结: 1.讲解了JS引擎,webAPI与event loop合作的机制. 2.setTimeout是把事件推送给Web API去处理,当时间到了之后才把setTimeout中的事件推入调用栈. ...

  4. 紫书 例题11-4 UVa247 (Floyd判断联通)

    Floyd联通, 然后为了输出联通分量而新建一个图, 让互相可以打电话的建立一条边, 然后dfs输出联通分量就ok了. #include<cstdio> #include<iostr ...

  5. Docker_入门?只要这篇就够了!(纯干货适合0基础小白)

    与sgy一起开启你的Docker之路 关键词: Docker; mac; Docker中使用gdb无法进入断点,无法调试; 更新1: 看起来之前那一版博文中参考资料部分引用的外站链接太多,被系统自动屏 ...

  6. 【Hibernate学习】 —— 抓取策略(注解方式)

    当应用程序须要在关联关系间进行导航的时候.hibernate怎样获取关联对象的策略. 抓取策略的方式: FetchType.LAZY:懒载入.载入一个实体时.定义懒载入的属性不会立即从数据库中载入. ...

  7. CodeForces 550B Preparing Olympiad(DFS回溯+暴力枚举)

    [题目链接]:click here~~ [题目大意] 一组题目的数目(n<=15),每一个题目有对应的难度,问你选择一定的题目(大于r个且小于l个)且选择后的题目里最小难度与最大难度差不小于x, ...

  8. [CQOI2009] 叶子的颜色 解题报告(树形DP)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1304 Description 给一棵m个结点的无根树,你可以选择一个度数大于1的结点作为 ...

  9. Metasploit的攻击实例讲解----ms10_046快捷方式图标漏洞

    不多说,直接上干货! 准备工具 1.Kali linux 2016.2(Rolling)系统  IP:  192.168.1.103 2.受害者机子(windows XP系统)   IP: 10.10 ...

  10. Spring深入浅出(二)IOC的单例 ,继承,依赖,JDBC,工厂模式以及自动装载

    IOC的单例模式--Bean Spring中的bean是根据scope来决定的. scope有4种类型: 1.singleton:单例模型,表示通过Spring容器获取的该对象是唯一的.常用并且默认. ...