Назад к вопросам
Middle
5
Нужно посчитать количество подряд идущих символов, но с сохранением порядка появления уникальных символов function countSymbols(str){ const alphabet = new Map(); for (const ch of str) { alphabet.set(ch, alphabet.get(ch) ? alphabet.get(ch) + 1 : 1) } return }
Компании, где спрашивали
Ростелеком
Ответ от нейросети
sobes.tech AI
Чтобы посчитать количество подряд идущих символов с сохранением порядка появления уникальных символов, нужно пройти по строке и считать длину каждой последовательности одинаковых символов подряд. Например, для строки "aaabbc" результат будет: a:3, b:2, c:1.
Вот пример реализации функции:
function countSymbols(str) {
const result = new Map();
let prevChar = null;
let count = 0;
for (const ch of str) {
if (ch === prevChar) {
count++;
} else {
if (prevChar !== null) {
result.set(prevChar, (result.get(prevChar) || 0) + count);
}
prevChar = ch;
count = 1;
}
}
// Добавляем последний символ
if (prevChar !== null) {
result.set(prevChar, (result.get(prevChar) || 0) + count);
}
return result;
}
// Пример использования:
const counts = countSymbols("aaabbcaaa");
for (const [char, cnt] of counts) {
console.log(`${char}: ${cnt}`);
}
// Выведет:
// a: 6
// b: 2
// c: 1
В этом коде мы аккумулируем количество подряд идущих символов и суммируем их для каждого уникального символа, сохраняя порядок появления в Map.