Страницы

Поиск по вопросам

вторник, 5 марта 2019 г.

Вывести число которое повторяется наибольшее количество раз

Получил задание: вывести цифру, которая повторяется в числе подряд наибольшее количество раз.
Однако возникла одна проблема. К примеру возьмем такое число - 122233. По идее должно вывестись сообщение "||2||3||". То есть цифра два повторяется три раза. Однако выводится следующее "||3||3||". Значение переменной max сохраняется и все отлично, но значение перемнной s_1 равняется последнему числу. Я пробовал делать еще одну проверку в else, типа:
if(same != max) { delete s_1; }
Но не работало. Помогите пожалуйста, вот код:
function same_numbers() { var number = document.getElementById('number').value; var replaced; var same; var s_1; var arr = []; while (number.length) { s_1 = number[0]; replaced = number.split(s_1).join(''); same = number.length - replaced.length; number = replaced; if (same == 1) { delete s_1; } else { (arr.push(same)); var max = Math.max.apply(Math, arr); }
} alert( "||" + s_1 + "||" + max + "||" );
}


Ответ

В этом моменте у вас происходит что то не понятное
if (same == 1) { delete s_1; } else { (arr.push(same)); var max = Math.max.apply(Math, arr); }
Если вам не важно какую именно цифру выводить в случае когда несколько максимумов, то можно считать так.
function same_numbers() { var number = document.getElementById('number').value; var replaced; var same; var s_1; var arr = []; var digits = {}; while (number.length) { s_1 = number[0]; replaced = number.split(s_1).join(''); same = number.length - replaced.length; number = replaced; digits[s_1] = same; } var max_key = null; for(var key in digits) { if(max_key === null || digits[key] > digits[max_key]) { max_key = key; } } alert( "||" + max_key + "||" + digits[max_key] + "||" ); }

Комментариев нет:

Отправить комментарий