Ваш код правильный, кроме условия if: if(letterCount[v] != true)
.
Решение: Вы можете легко решить проблему, просто изменив условие на следующее: if(letterCount[v] == undefined)
Проблема: Условие работает, как вы предполагали, когда:
letterCount[v]
равно undefined
letterCount[v]
равно 1
Но когда letterCount[v]
становится больше 1, условие снова выполняется, потому что 2 != true
равно true
.По этой причине ваш код будет сбрасывать значения на 1
каждый раз, когда встречается нечетное число раз.
Для иллюстрации, если мы запустим ваш код для слова с двумя e
, мы получаем:
findMaxRepeatCountInWord('expectd')
> 2
, но если есть третье вхождение буквы, как в вашем примере, число будет сброшено до 1
.
Производительность Тем не менее, этот подход не очень эффективен в вычислительном отношении.Для некоторого обсуждения относительно эффективных решений аналогичной проблемы вы можете, например, этот вопрос посмотреть.