检查一个单词是否是另一个单词的旋转的方法

时间:2017-01-16 02:25:45

标签: string algorithm substring

处理Cracking The Coding Interview问题,该问题要求检查一个字符串是否是另一个字符串的旋转的方法。对问题的一个警告是,必须通过一次调用isSubstring(s1, s2)来解决问题。

我完全理解作者的解决方案 - 如果s2是s1的旋转,那么你可以将s1分成x和y两部分,使得s1 = xy和s2 = yx。因此,作者继续说,s2必须是s1s1的子串(yx是xyxy的一部分)。

我写这个问题是为了确保我彻底理解。它不等于说s1必须是s2s2的子串(也就是说,xy必须是yxyx的子串)才能使s2成为一个旋转?这样,两种方法都是等价的吗?不确定我是否遗漏了某些东西..

1 个答案:

答案 0 :(得分:1)

是的,这两个是等价的。如果s1s2的轮播,那么s2也是s1的轮换,因此您解决问题的方向并不重要。如果两个字符串相互旋转,s1将是s2s2的子字符串,而s2将是s1s1的子字符串。