Найдите наименьшую строку x, которая может создать две заданные строки, если повторяется 0 или n раз - PullRequest
2 голосов
/ 26 марта 2020

Мне задали этот вопрос в задаче программирования, но мое решение прошло 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.

1 Ответ

0 голосов
/ 26 марта 2020

Как говорится в вопросе, х не обязательно должен совпадать с т. Попробуйте самую короткую повторяющуюся подстроку s и посмотрите, делит ли она t.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...