一个团队研发了一种新的数据管理系统,他们需要你来帮助来写一个‘like’操作符。
‘Like’操作符按照以下方式工作。他会返回true如果一个字符串能完全被所指定的模板所匹配。模板中可以包含任何符号匹配字符串中相应的符号或者可能包含下列特殊的符号:
%:匹配字符串中若干(包括0)个任意字符
_:匹配字符串中任意一个字符
[с1-с2]:匹配字符串中任意一个在c1-c2范围内的字符
[c1c2c3…cN]:匹配字符串中任意一个在集合{c1,c2,c3,…,cN}中的字符
[^с1-с2]:匹配字符串中任意一个不在c1-c2范围内的字符
[^c1c2c3…cN]:匹配字符串中任意一个不在集合{c1,c2,c3,…,cN}中的字符
下面几个提示有助于你理解整个题意:
1. ‘[]’有最高优先级,找到一个最左边的‘[‘再找到后面第1个‘]’,那么你可以确定这2个括号严格地相关联。
2. 模板中不会出现像 [] 和 [^] 这样的不合法数据。
3. 数据中可能出现多种以上的特殊符号,若属于同一个[],以从左至右扫描为准,‘^’只应该认为紧跟在[后面的是有效的
例如[a-cdf]可以匹配a,b,c,d,f中的一个,而[-acdf]可以匹配-,a,c,d,f中的一个,[^a-zA-Z0-9]可以匹配除了大小写字母和数字以外的任何字符,而[a-c-e]可以匹配a,b,c,-,e这5个字符中的一个
第1行包含1个正整数N,为数据组数。
接下来N行,每行为一个如下格式的字符串。
字符串 like 模板
字符串或者模板可以包含任何一个ASCII码在32-255间的字符。特别地,单引号(ASCII 39)在字符串或者模板中将会表示为连续2个单引号。字符串或者模板的最多包含100个字符。
包含N行,每行对应输入中的一个数据输出YES或者NO。