Функция duplicateCount

Функция duplicateCount


Ответ:

function duplicateCount(text) {
    const duplicates = [];

    return text
        .toLowerCase()
        .split("")
        .reduce((acc, cur, index, arr) => {
            if (arr.includes(cur, ++index) && !duplicates.includes(cur)) {
                duplicates.push(cur);
                return ++acc;
            }
            return acc;
        }, 0);
}

Объяснение:

Создаём массив, куда позднее будем класть дубликаты. Затем приводим входящую строку к нижнему регистру и разбиваем её на массив.

Всё самое интересное происходит в методе reduce. В первое значение аккумулятора ставим ноль. Внутри функции всего одно условие: проверяем, есть ли дубликат текущего значения в текущем массиве. Если есть, то проверяем, не считали ли мы уже такое значение. Если условие проходит, то увеличиваем значение аккумулятора на единицу, в противном случае возвращаем аккумулятор как есть.

Код для проверки:

function duplicateCount(text) {
    const duplicates = [];

    return text
        .toLowerCase()
        .split("")
        .reduce((acc, cur, index, arr) => {
            if (arr.includes(cur, ++index) && !duplicates.includes(cur)) {
                duplicates.push(cur);
                return ++acc;
            }
            return acc;
        }, 0);
}

console.log(duplicateCount("abcde")); // 0
console.log(duplicateCount("aabBcde")); // 2
console.log(duplicateCount("Indivisibility")); // 1
console.log(duplicateCount("Indivisibilities")); // 2


Report Page