@buymyopps

Как удалить повторения в строке?

Здравствуйте. Есть такая строка https://vk.comhttps://vk.comhttps://vk.com
Как можно почистить ее от повторений, чтобы на выходе получилось https://vk.com?
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Неоптимально в лоб можно так:
подбирать число возможных повторов: от 2 до длины строки, и должно делиться без остатка.
-- на каждом проверять: брать подстроку и сравнивать с остальными той же длины
-- найденный повтор запоминать, затирая предыдущий найденный, если был.
вернуть либо последний (значит, самый короткий) найденный повтор, либо исходную строку.

spoiler
function noRepeats(str) {
  const length = str.length;
  let result;
 
  search:
	for (let i = 2; i < length; i++) {
    if (length % i) continue;
    const slen = length / i;
    const sample = str.substr(0, slen);
    for (let j = 1; j < i; j++) {
      if (sample !== str.substr(j * slen, slen))
      	continue search;
    }
    
    result = sample;
  }
  
  return result.length ? result : str;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы