Другу моему был задан следующий вопрос сегодня в интервью для должности разработчика программного обеспечения:
Учитывая две строки s1
и s2
, как вы проверите, является ли s1
версией s2
<
Пример:
Если s1 = "stackoverflow"
, то некоторые из его повернутых версий:
"tackoverflows"
"ackoverflowst"
"overflowstack"
где "stackoverflwo"
не развернутая версия.
Ответ, который он дал, был:
Возьмите
s2
и найдите самый длинный префикс, который является подстрокойs1
, которая даст вам точку поворота. Как только вы найдете эту точку, сломайтеs2
в этой точке, чтобы получитьs2a
иs2b
, а затем просто проверьте, еслиconcatenate(s2a,s2b) == s1
Это похоже на хорошее решение для меня и моего друга. Но интервьюер думал иначе. Он попросил более простое решение. Пожалуйста, помогите мне, сообщив, как вы это сделаете в Java/C/C++
?
Спасибо заранее.