Получил задание: вывести цифру, которая повторяется в числе подряд наибольшее количество раз.
Однако возникла одна проблема. К примеру возьмем такое число - 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] + "||" );
}
Комментариев нет:
Отправить комментарий