Мне задали этот вопрос в задаче программирования, но мое решение прошло 8/14 тестовых случаев и не смогло решить его на 100%. Мне нужно понять логи c за вопрос. Мой подход состоял в том, чтобы выяснить, может ли конкатенация t
0 или n
раз дать вам s.
Если да, я возвращаю самую длинную повторяющуюся подстроку t.
Заданную строку s
и строка t
, найдите длину наименьшей строки x
, такую, что если x
объединяется любое количество раз, мы получаем s
и t
. Если это невозможно, верните -1;
Пример 1:
s = bcdbcdbcd
t = bcdbcd
Если строка t
объединена дважды, результат bcdbcdbcdbcd
> s
, так s
не делится на t
. Return -1
Пример 2:
s = bcdbcdbcdbcd
t = bcdbcd
Если строка String t
объединена дважды, результат bcdbcdbcdbcd
= s
, поэтому s
делится на t
, Наименьшая строка x
, которую можно объединить для получения s
и t
, равна bcd
. Возвращаем его длину 3.
Пример 3:
s = lrbb
t = lrbb
Если String lrbb
объединяется один раз, мы получаем строку s
и строку t
. Возвращаем его длину 4.
Пример 4:
s = rbrb
t = rbrb
Если String rb
объединяется дважды, мы получаем строку s
и строку t
. Вернуть его длину 2.