我的一位朋友今天在面试中被问到以下问题:软件开发人员的职位:
鉴于两个字符串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++?
提前致谢.
在今天的Boost图书馆会议上,"现代C++设计"和Loki C++库的作者Andrei Alexandrescu发表了题为"Iterators Must Go"(视频,幻灯片)的演讲,讲述了为什么迭代器不好,他有一个更好的解决方案.
我试着阅读演示幻灯片,但我无法从中得到很多.