📅  最后修改于: 2023-12-03 15:10:52.915000             🧑  作者: Mango
有时候,在面试或者日常编程工作中,我们需要判断两个字符串是否相互旋转。例如,给定两个字符串s1和s2,我们要判断s2是否是s1旋转后的结果。
下面是一段Python代码,可以判断两个字符串是否相互旋转:
def is_rotation(s1, s2):
if len(s1) != len(s2):
return False
s1s1 = s1 + s1
return s2 in s1s1
我们来逐行解释一下这段代码的含义:
is_rotation
的函数,该函数接受两个字符串s1
和s2
作为参数。s1
和s2
的长度是否相同,如果不同就直接返回False
,因为两个长度不同的字符串肯定不可能相互旋转。s1
和s1
拼接起来,得到s1s1
,这是为了方便后面的判断。in
运算符判断s2
是否是s1s1
的子串,如果是,就返回True
,否则返回False
。下面是一个示例:
s1 = "abcd"
s2 = "dabc"
print(is_rotation(s1, s2)) # 输出 True
注意,这个算法只适用于判断两个字符串是否相互旋转,不适用于判断一个字符串是否是另一个字符串的子串。如果要判断一个字符串是否是另一个字符串的子串,应该使用其他算法,例如KMP算法、Boyer-Moore算法等。