他将这个任务交给了他的心腹哈库莱特。忠实的哈库莱特认为,只需要输入密码就能解锁的加密装置实在是太不安全了,所以他决定用一个特别的加密装置来对Aldnoah启动装置进行保护。
他精心设计了这样一套加密装置:
该装置会给定解密者两个字符串s,t,其中s只包含小写字母以及*,t只包含小写字母。解密者可以进行任意多次操作,每次选择s中的一个*,将它修改为任意多个(可以是0个)它的前一个字符。询问是否能将s修改为t。
聪明的哈库莱特当然不会只给予解密者一组数据啦,所以解密时会有多组数据出现,并且每组数据只有在规定时间内答对才能够继续解密下一组数据。
今天他制作好了加密装置交给了斯雷因·特洛耶特伯爵,斯雷因准备先进行测试过后再将它安装在启动装置上。他随机制造了几组测试数据输入装置,然后让哈库莱特进行解密。哈库莱特会怎么做呢?
输入输出格式
输入格式:
第一行一个整数T表示数据组数。
每组数据两行,第一行一个字符串s,第二行一个字符串t。
输出格式:
每组数据输出一行,如果能将s修改为t,输出Yes,否则输出No。
输入输出样例
2 a* aaaa a* ab输出:
Yes No个人代码:
var
s,t:array[1..30001]of char;
n,i,ss,tt:longint;
bo:boolean;
Procedure gai;
var i,j:longint;
begin
bo:=true;
i:=1; j:=1;
repeat
if t[i]=s[j] then begin inc(i); inc(j); end
else
begin
if s[j]<>'*'then begin
bo:=false;
break;
end
else begin
s[j]:=s[j-1];
if s[j]<>t[i] then begin
bo:=false;
break;
end
else
while s[j]=t[i] do inc(i);
end;
inc(j);
end;
until (j>ss)or(i>tt);
if i<tt then bo:=false;
end;
BEGIN
readln(n);
for i:=1 to n do
begin
ss:=1;
while not eoln do
begin
read(s[ss]); inc(ss);
end;
readln;
tt:=1;
while not eoln do
begin
read(t[tt]); inc(tt);
end;
readln;
gai;
if bo=false then writeln('No')
else writeln('Yes');
end;
END.