解题思路
本题考查队列与栈的模拟判定。∣U∣=∣V∣≤2×105,需要线性做法。
- 队列先进先出,入站顺序会被完整保留,因此队列可行当且仅当 U=V。
- 栈后进先出,且入站与出站可以交错。按 V 从左到右贪心:若当前栈顶不是下一个出站字符,就把 U 中尚未入站的字符压栈,直到栈顶匹配或入站耗尽;匹配则弹出,否则不可行。有重复字符时该贪心仍然正确:若栈顶已是所需字符,再压栈只会把它压到更深处,无法作为下一个出站。
- 若 U=V,则每个字符入站后立即出站即可,栈也一定可行。因此「只能是队列」在本题约束下不会出现,实现时仍应同时判断两种规则,再按四类结果输出。
- 综合:U=V 输出
both;仅栈可行输出 stack;否则输出 neither。