@SergeiB

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

Есть две строки. Как, сопоставив их, выявить вхождение, присутствующее в обеих? Например:
const str1 = 'some/path/to/';
const str2 = '../to/my/file';
// Общая подстрока - '/to/'.
  • Вопрос задан
  • 86 просмотров
Решения вопроса 2
bingo347
@bingo347 Куратор тега JavaScript
Бородатый программер
С учетом комментария
В качестве результата берётся самая длинная найденная подстрока
задачу можно решить такой функцией:
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;
      }
    }
  }
}
Ответ написан
Aetae
@Aetae
Тлен
На мелких строках конечно можно решать тупым перебором, но вообще это алгоритмическая задача:
https://en.wikipedia.org/wiki/Longest_common_subst...
https://en.wikibooks.org/wiki/Algorithm_Implementa...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 сент. 2020, в 12:04
1000 руб./в час
19 сент. 2020, в 11:59
20000 руб./за проект
19 сент. 2020, в 11:26
17500 руб./за проект