Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: string, distance, algorithm, iteration

Как находить кратчайшее расстояние между повторяющимися символами?

Вопрос проверяет умение решать задачи на обработку строк и поиск минимальных расстояний между одинаковыми символами, что важно для алгоритмического мышления.

Короткий ответ

Нужно пройти по строке, запоминая последнюю позицию каждого символа. При встрече повторяющегося символа вычисляем разницу между текущей и последней позицией, обновляем минимальное расстояние. В конце возвращаем найденный минимум.

Длинный ответ

Поиск кратчайшего расстояния между повторяющимися символами

Задача заключается в том, чтобы найти минимальное расстояние между двумя одинаковыми символами в строке. Расстояние обычно измеряется как разность индексов (абсолютное значение). Это классическая задача на обработку строк, которая проверяет умение эффективно использовать хеш-таблицы или массивы для отслеживания позиций символов.

Алгоритм

Мы можем решить задачу за один проход по строке, используя словарь для хранения последнего вхождения каждого символа. При встрече символа, который уже встречался, вычисляем расстояние до его предыдущей позиции и обновляем минимальное значение. Если символ встречается впервые, просто сохраняем его индекс.

Пример кода на JavaScript

function minDistanceBetweenRepeats(str) {
  const lastPos = {};
  let minDist = Infinity;
  for (let i = 0; i < str.length; i++) {
    const char = str[i];
    if (char in lastPos) {
      const dist = i - lastPos[char];
      if (dist < minDist) minDist = dist;
    }
    lastPos[char] = i;
  }
  return minDist === Infinity ? -1 : minDist;
}

console.log(minDistanceBetweenRepeats("abca")); // 3 (a на 0 и 3)
console.log(minDistanceBetweenRepeats("abcabc")); // 3 (a на 0 и 3)

Применение

Подобные алгоритмы используются в задачах сжатия данных, поиска паттернов и анализа текста. Например, для определения повторяющихся подстрок или оценки разнообразия символов.

Вывод: Данный подход эффективен благодаря однопроходному алгоритму с использованием хеш-таблицы, что даёт временную сложность O(n) и память O(k), где k — количество уникальных символов. Применяйте его, когда нужно быстро найти минимальное расстояние между одинаковыми элементами в последовательности.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    3

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

  • Math

    Math

Ключевые слова

#string

#distance

#algorithm

#iteration

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.