一、题目
二、分析
对于这题,读懂题意非常重要。
题目的意思是在$s$的基础上,按题目中所描述的步骤,即在$s$中任意选择一个字符$c$,在这个字符后面添加一个不等于$c$的字符$d$。
问最终能否由$s$按步骤变成$t$。
理解了题意后,我们就可以推导几个基本结论:
1 $s$肯定是$t$的字串。
2 由于是在$s$的基础上进行添加的,那么,我们可以确定除了最前面相等的$k$个串是无法添加的,后面的串都可以添加出来。如果$t$前面由相等的$k$个串,易证:$s$前面也必须由$k$个相等的串,可以结合步骤的处理了过程画一下。
满足上述两个条件则可以由$s o t$。
三、AC代码
1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 5 using namespace std; 6 const int maxn = 1e5 + 13; 7 char s[maxn], t[maxn]; 8 9 bool solve() 10 { 11 int i, j; 12 bool flag = true; 13 for(i = j = 0; t[i] != '