Сообщение от johnsnow
|
Нужно преобразовать этот код не используя строки и методы типо Math.floor,max,min
|
Почему ранее предложенное не подходит, задание?
Никаких max и min и не требуется. Вот так можно проверить на палиндром не только число, но и слово, предложение.
function palindrome(s) {
var res = true;
s = s.toString().toLowerCase().replace(/\s/g,'');
for(var i=0, j=parseInt(s.length/2), k=s.length-1; i<j; i++, k--) {
if(s.charAt(i) != s.charAt(k)) {
res = false;
break;
}
}
return res;
}
alert('Число 123454321 ' + (palindrome(123454321) ? '' : ' не') + ' является палиндромом');
alert('Число 123456789 ' + (palindrome(123456789) ? '' : ' не') + ' является палиндромом');
alert('Строка "Аргентина манит негра" ' + (palindrome('Аргентина манит негра') ? '' : ' не') + ' является палиндромом');
alert('Строка "Аргентина ждет негра" ' + (palindrome('Аргентина ждет негра') ? '' : ' не') + ' является палиндромом');
Что сложного то - преобразуем значение в строку, удалим из нее пробелы. Длину входного значения делим пополам, отбрасывая десятичный результат (при нечетном числе знаков в строке средний одиночный символ будет равен сам себе), получая число итераций цикла. Далее в цикле с полученной итерацией проверяем крайние символы строки и если значения не равны, то признак палиндрома устанавливаем равный false, прерываем цикл и возвращаем результат.