栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。
假设以S和X分别表示入栈和出栈操作。如果根据一个仅由S和X构成的序列,对一 个堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称 该序列是合法的堆栈操作序列。请编写程序,输入S和X序列,判断该序列是否合法。
输入第一行给出两个正整数N和M,其中N是待测序列的个数,M(≤50)是堆栈的 最大容量。随后N行,每行中给出一个仅由S和X构成的序列。序列保证不为空,且长度 不超过100。
对每个序列,如果该序列是合法的堆栈操作序列在一行中输出YES,否则输出NO。
4 10 SSSXXSXXSX SSSXXSXXS SSSSSSSSSSXSSXXXXXXXXXXX SSSXXSXXX
YES NO NO NO