处理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成为一个旋转?这样,两种方法都是等价的吗?不确定我是否遗漏了某些东西..
答案 0 :(得分:1)
是的,这两个是等价的。如果s1
是s2
的轮播,那么s2
也是s1
的轮换,因此您解决问题的方向并不重要。如果两个字符串相互旋转,s1
将是s2s2
的子字符串,而s2
将是s1s1
的子字符串。