Есть несколько способов проверить наличие палиндрома.
рекурсивный путь:
def palindrome?(n)
if n.length == 1 || n.length == 0
true
else
if n[0] == n[-1]
palindrome?(n[1..-2])
else
false
end
end
end
Использование .reverse
метода в Ruby:
def isPalindrome(n)
n.downcase == n.reverse.downcase ? true : false
end
Другой способ думать о палиндром слова, разбивая строку в массив символов каждый из которых представляет позиция в списке. Например, слово «civic», разделенное на массив, дает нам ["c","i","v","i","c"]
. Затем мы можем проверить, соответствует ли задний символ «c» переднему символу «c», удаляя задний и передний каждый раз, когда условие истинно.
def isPalindrome(n)
new_char = n.split("")
answer = false
while new_char.length > 1
if new_char[0] == new_char[-1]
answer = true
else
answer = false
break
end
new_char.pop
new_char.shift
end
answer
end
Поскольку мы можем менять символы в массиве, мы можем сравнить их и продолжить, только если они совпадают. Мы можем поддерживать соответствие задней части массива, пока не закончим символы или не останемся с массивом размера 1 в зависимости от того, была ли длина исходной строки четной или нечетной.
To_i является тривиально неправильным. Проверьте значение на каждом шаге. Кроме того, с этим кодом всегда возвращается значение * a * (true или false). – user2864740
to_i является тривиально неправильным, почему? «2» .to_i возвращает 2, что мне нужно? – Bula
Нет, это не то, что вам нужно. Вам нужна строка. С самого начала и переходим к каждому повторению: '10201' – user2864740