@WarriorKodeK

Как возвращать последний элемент?

Привет. Решаю алгоритмические задачки и возник вопрос.
Задание:
Дано строка, и в ней надо найти наиболее повторяющиеся символ.
То есть: "abcccss" => "c";

Моя реализация:
const maxChar = str => {
  const charObj = {};
  let max = 0;
  let maxChar = '';

  for (let char of str) {
    if (charObj[char]) {
      charObj[char]++;
    } else {
      charObj[char] = 1;
    }
  }

  for (let char in charObj) {
    if (charObj[char] > max) {
      max = charObj[char];
      maxChar = char;
    }
  }
  console.log(charObj);
  return maxChar;
};

maxChar('abccccsddasdadwqwf') => "c" // а должно "d"


Но если в слове есть >2 повтор. символов, то надо возвращать последний, а у меня возвращает первый. Как это реализовать?
  • Вопрос задан
  • 63 просмотра
Решения вопроса 3
bogdan_uman
@bogdan_uman
шлЫмазл неукЪ-поцЪ
Алгоритмически возможно ее нужно за один проход цикла считать

const maxChar = str => {
  const charObj = {};
  let max = {char:'', count:''};
  let maxChar = '';

  for (let char of str) {

    if (charObj[char]) {
      charObj[char]++;
    } else {
      charObj[char] = 1;
    }

    if ( charObj[char] >= max.count ) {
      max.char = char
      max.count = charObj[char]
    }

  }

  return max.char;
};

console.log( maxChar('abccccsddasdadwqwf'))
Ответ написан
longclaps
@longclaps
В этой строке
if (charObj[char] > max) {
сравнивай по >=
Ответ написан
axaxa_man
@axaxa_man
web developer
если возвращать последний, то нужно сравнение изменить

for (let char in charObj) {
    if (charObj[char] >= max) {
      max = charObj[char];
      maxChar = char;
    }
  }


Не строго >, а >=
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы