hdu 5414 CRB and String(想法题)
来源:互联网 发布:当红网络主播 英语 编辑:程序博客网 时间:2024/05/24 07:23
题意:
给你两个字符串s和t,你可以在字符串s中任意选一个字符c,在该字符c后插入一个字符d(d!=c),问经过多次此操作,能否将字符串s转化成字符串t。
解析:
不要想太复杂了,分情况讨论清楚就好了。
1. 如果|s|>|t| ,那么无论怎么组合都是无法构成t的。
2. 如果s[0]!=t[0] ,无论怎么组合,也都是无法构成t的。
3. 以上两种情况比较好考虑,然后找两个串的最长公共前缀。
如果s的最长公共前缀等于|t|则表明两个字符串完全相同,这种看情况可以构造出t,因为上面已经排除了|s|>|t| 的情况了。
4. 由于插在后面的字符不能和其前面的字符相同,那么判断一下两个字符串的公共前缀,是不是全部都是一个字母,如果全部是一个字母,那么如果当前要插入的字符是和前面字符相同,那么就无法构造出t。
5. 排除了4这种情况,那么就可以任意构造出想要的字符串了,因为如果不同,就可以随意构造后面的字符,相同的话,就可以在前面不同的字符后面插入一个字符,等于构造出一个相同的字符。
那么相同的话两个指针一同向前推进,否则t的指针向前推进,判断最后s是否有剩余。
#include <cstdio>#include <cstring>#include <algorithm>#include <string>using namespace std;const int N = (int)1e5 + 10;char pat[N], tar[N];bool judge() { int lenP = strlen(pat), lenT = strlen(tar); if(pat[0] != tar[0] || lenP > lenT) return false; int i = 0, j = 0; bool diff = false; while(i < lenP) { if(pat[i] == tar[j]) i++, j++; else break; if(i > 1 && pat[i-1] != pat[i-2]) diff = true; } if(i == lenT) return true; if(!diff && tar[j] == tar[j-1]) return false; while(j < lenT) { if(pat[i] == tar[j]) i++; j++; } if(i == lenP) return true; return false;}int main() { int T; scanf("%d", &T); while(T--) { scanf("%s%s", pat, tar); puts(judge() ? "Yes" : "No"); } return 0;}
0 0
- hdu 5414 CRB and String(想法题)
- CRB and String(字符串想法规律题)
- [思路题] hdu 5414 CRB and String
- hdu 5414 CRB and String(贪心)
- HDU 5414 CRB and String(贪心)
- hdu 5414 CRB and String(贪心)
- HDU 5414 CRB and String(水~)
- HDU 5414 CRB and String
- hdu 5414 CRB and String
- HDU 5414 CRB and string
- hdu 5414 CRB and String
- HDU 5414CRB and String
- HDU 5414 CRB and String 思维好题
- [HDU 5414] CRB and String (构造+脑洞)
- 贪心,模拟,构造(HDU 5414,CRB and String)
- hdu 5414 CRB and String (贪心)
- hdu 5414 CRB and String(字符串模拟)
- hdu 5414 CRB and String(字符串模拟)
- java并发编程---Java内存模型(JMM)
- curl post json
- 嵌入指南|Chrome V8
- Java三大常用布局管理器
- 第四周第五天
- hdu 5414 CRB and String(想法题)
- HDOJ 5409 CRB and Graph
- Linux无锁编程
- 杭电2899Strange fuction 求导+二分
- hdoj 2112 HDU Today【3种方法】
- HDU 2149 Public Sale
- OWNCLOUD源码改动分析---登录模块
- ubuntu15.04安装chrome
- 【LeetCode】(231)Power of Two(Easy)