@SergeiB

Как найти самую длинную общую подстроку?

Есть две строки. Как, сопоставив их, выявить вхождение, присутствующее в обеих? Например:
const str1 = 'some/path/to/';
const str2 = '../to/my/file';
// Общая подстрока - '/to/'.
  • Вопрос задан
  • 628 просмотров
Решения вопроса 2
Aetae
@Aetae Куратор тега JavaScript
Тлен
На мелких строках конечно можно решать тупым перебором, но вообще это алгоритмическая задача:
https://en.wikipedia.org/wiki/Longest_common_subst...
https://en.wikibooks.org/wiki/Algorithm_Implementa...
Ответ написан
Комментировать
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
С учетом комментария
В качестве результата берётся самая длинная найденная подстрока
задачу можно решить такой функцией:
function findLongestMatchSubstring(str1, str2) {
  for(let len = str1.length; len--;) {
    for(let pos = 0; pos + len <= str1.length; pos++) {
      const substr = str1.slice(pos, pos + len);
      if(str2.includes(substr)) {
        return substr;
      }
    }
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы