我的一位朋友今天在面试中被问到以下问题:软件开发人员的职位:
鉴于两个字符串s1,s2您将如何检查是否s1是旋转版本s2?
例:
如果s1 = "stackoverflow"那么以下是它的一些旋转版本:
"tackoverflows"
"ackoverflowst"
"overflowstack"
Run Code Online (Sandbox Code Playgroud)
其中,作为"stackoverflwo"是不旋转的版本.
他给出的答案是:
获取
s2并找到作为子字符串的最长前缀,s1它将为您提供旋转点.一旦你找到那个点,突破s2该点处得到s2a和s2b,然后就检查concatenate(s2a,s2b) == s1
对我和我的朋友来说,这似乎是一个很好的解决方案.但面试官不这么认为.他要求一个更简单的解决方案.请告诉我你将如何做到这一点来帮助我Java/C/C++?
提前致谢.
有两个字符串,我们如何检查一个是否是另一个的旋转版本?
For Example : hello --- lohel
一个简单的解决方案是concatenating首先使用自身的字符串并检查另一个是否是substring连接版本的字符串.
还有其他解决方案吗?
我想知道我们是否可以使用它circular linked list?但我无法达成解决方案.