我的朋友在软件开发职位的面试中被问到以下问题:
给定两个字符串 s1
和 s2
,你将如何检查 s1
是否是 旋转 版本的 s2
?
例如:
如果 s1 = "stackoverflow"
,则以下是它的一些旋转版本:
"tackoverflows"
"ackoverflowst"
"overflowstack"
而 "stackoverflwo"
不是旋转版本。
他给出的答案是:
取
s2
并查找最长的前缀,它是s1
的子字符串,这将给你旋转点。一旦找到该点,请在该点处断开s2
,以获得s2a
和s2b
,然后只需检查concatenate(s2a,s2b) == s1
是否成立。
对我和我的朋友来说,这看起来像一个很好的解决方案。 但面试官并不这么认为。 他要求提供更简单的解决方案。 请帮我说明如何用 Java/C/C++
实现此功能?
感谢您提前的帮助。