📅  最后修改于: 2023-12-03 15:28:48.557000             🧑  作者: Mango
给定两个字符串s1和s2,判断s2是否是s1的循环左移之后得到的字符串。
比如:"AABCD"是"BCDAA"的一个循环左移。
对于两个字符串$s1$和$s2$,如果$s2$是$s1$的循环左移,那么$s2$一定可以表示成$s1$的两个部分拼接而成,即 $s2 = xy$,并且 $yx$ 一定是 $s1s1$ 的子串,即 $yx \in s1s1$。
因此,我们只需要判断 $s2$ 是否为 $s1s1$ 的子串即可。
def is_rotation(s1: str, s2: str) -> bool:
if len(s1) != len(s2):
return False
return s2 in (s1 + s1)
assert is_rotation("AABCD", "BCDAA") == True
assert is_rotation("abcdefg", "fgabcde") == True
assert is_rotation("abcde", "adcbe") == False