题目链接: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. Hadoop_HDFS-基础知识摘要

    Hadoop典型应用有:搜索.日志处理.推荐系统.数据分析.视频图像分析.数据保存等.0.数据要首先分块 Block:将一个文件进行分块,通常是64M. NameNode:--管理节点保存整个文件系统 ...

  2. NOIp模拟赛三十四(yxq供题)

    毒瘤yxq! 毒瘤yxq! 毒瘤yxq! 据yxq自己说,林导让他出题的时候要求是“代码量少”,“思维难度高”,“不涉及太复杂的算法”,而且“最好要让myh有一题做不出来”(狙击myh).于是今天的题 ...

  3. 【python爬虫和正则表达式】爬取表格中的的二级链接

    开始进公司实习的一个任务是整理一个网页页面上二级链接的内容整理到EXCEL中,这项工作把我头都搞大了,整理了好几天,实习生就是端茶送水的.前段时间学了爬虫,于是我想能不能用python写一个爬虫一个个 ...

  4. react-native 编译报错: undefined is not an object (evaluating '_react2.PropTypes.func')

    情况通报: 因为是我的二维码模块报错,提示报错代码如下 重要信息是下面的红色字体部分(Android 模拟器红屏) undefined is not an object (evaluating '_r ...

  5. Linux 和 Windows 双系统时间同步问题 修改注册表

    路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation 1:新建  >> DWORD(32 b ...

  6. linux上 mysql 的安装,以及解决不能远程访问数据库系统的问题

    1.安装 通过 yum 安装最方便 2.重设密码: 修改  etc/my.cnf 文件 skip-grant-tables 跳出登录后,# /etc/init.d/mysqld restart 重启后 ...

  7. size(A,1)

    在matlab中,size()用来返回数据序列的行数和列数.size(A,1)返回的是矩阵A所对应的行数.另外,(1)s=size(A), 当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时 ...

  8. 嵌入式(C)笔试题

    1 读程序段,回答问题 (a) int main(int argc,char *argv[]) { int c=9,d=0; c=c++%5; d=c; printf("d=%d\n&quo ...

  9. 2015 Multi-University Training Contest 2 hdu 5303 Delicious Apples

    Delicious Apples Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Other ...

  10. Ubuntu搜狗输入法的安装

    Ubuntu搜狗输入法的安装 这个直接安装就可以了:因为现在的Ubuntu是16.04版本,输入法已经是Fcitx版本: 下载搜狗输入法For Linux之后,直接双击就可以安装了: 安装之后,需要注 ...