我的一位朋友今天在面试中被问到以下问题:软件开发人员的职位:
鉴于两个字符串s1,s2您将如何检查是否s1是旋转版本s2?
例:
如果s1 = "stackoverflow"那么以下是它的一些旋转版本:
"tackoverflows"
"ackoverflowst"
"overflowstack"
其中,作为"stackoverflwo"是不旋转的版本.
他给出的答案是:
获取
s2并找到作为子字符串的最长前缀,s1它将为您提供旋转点.一旦你找到那个点,突破s2该点处得到s2a和s2b,然后就检查concatenate(s2a,s2b) == s1
对我和我的朋友来说,这似乎是一个很好的解决方案.但面试官不这么认为.他要求一个更简单的解决方案.请告诉我你将如何做到这一点来帮助我Java/C/C++?
提前致谢.