5998:字符串循环同构

时间限制:2 S   /  内存限制:65536 KB
AC:158   /  Submit:211
问题描述

给定两个字符串 $$S$$ 和 $$T$$,判断 $$T$$ 是否是 $$S$$ 的循环同构串。

设 $$|S| = n$$。将 $$S$$ 的字符循环左移 $$k$$ 位($$0 \le k < n$$)得到的字符串,称为 $$S$$ 的一个循环同构串。

形式化地说,若存在 $$k$$ 使得 $$T = S[k\dots n-1] + S[0\dots k-1]$$,则称 $$T$$ 是 $$S$$ 的循环同构。

输入描述

第一行一个整数 $$Q$$,表示询问次数。($$Q \le 10^5$$)

接下来 $$Q$$ 行,每行两个字符串 $$S$$ 和 $$T$$,以空格分隔。($$\sum |S| \le 10^6$$,$$|S| = |T| \ge 2$$)

字符串仅包含小写英文字母

输出描述

对于每个询问,若 $$T$$ 是 $$S$$ 的循环同构,输出一行 "YES",否则输出 "NO"。

样例输入复制样例

4

abcde cdeab

abc abc

aaaa aaaa

hello world

样例输出

YES

YES

YES

NO

提示说明

"abcde" 左移 3 位 → "cdeab",YES

"abc" 左移 0 位 → "abc",YES

"aaaa" 左移 0 位 → "aaaa",YES

"hello" 无论怎么旋转都无法得到 "world",NO

相关

25-26(2)第3次线上赛


Copyright 2016 - 2026 XUJC ACM Team
闽ICP备2020022076号-1