Я хотел проверить, является ли строка палиндром или не использует ruby-код.
Я стартер в рубине, поэтому не слишком хорошо знаком с string methods
в рубине
Я хотел проверить, является ли строка палиндром или не использует ruby-код.
Я стартер в рубине, поэтому не слишком хорошо знаком с string methods
в рубине
def check_palindromic(variable)
if variable.reverse == variable #Check if string same when reversed
puts "#{ variable } is a palindrome."
else # If string is not the same when reversed
puts "#{ variable } is not a palindrome."
end
end
Если вы не знакомы с методами Ruby String
, вам следует взглянуть на документацию, это очень хорошо. Ответ Mithun уже показал вам основной принцип, но поскольку вы новичок в Ruby, там еще несколько вещей, которые нужно иметь в виду:
*) Если у вас есть предикатный метод, его обычно называют его с завершающим вопросительным знаком, например. palindrome?
.
*) Булевы выражения оцениваются как логические, поэтому вам не нужно явно возвращать true
или false
. Следовательно, короткая идиоматическая версия будет
def palindrome?(str)
str == str.reverse
end
*) Поскольку классы Ruby открыты, вы можете добавить это в класс строк:
class String
def palindrome?
self == self.reverse
end
end
*) Если вы не хотите использовать monkey-patch String
, вы можете напрямую определить метод для одного объекта (или использовать модуль и Object #extend):
foo = "racecar"
def foo.palindrome?
self == self.reverse
end
*) Возможно, вы захотите сделать проверку палиндрома более сложной, например. когда дело доходит до случая или пробела, так что вы также можете обнаружить палиндромные предложения, заглавные слова, такие как "Racecar" и т.д.
pal = "Never a foot too far, even."
class String
def palindrome?
letters = self.downcase.scan(/\w/)
letters == letters.reverse
end
end
pal.palindrome? #=> true
Рекурсивное решение показывает, как строки можно индексировать в Ruby:
def palindrome?(string)
if string.length == 1 || string.length == 0
true
else
if string[0] == string[-1]
palindrome?(string[1..-2])
else
false
end
end
end
Если чтение строковой документации Ruby слишком скучно для вас, попробуйте поиграть с вопросами практики Ruby на CodeQuizzes, и вы получите большую часть важных методы.
def is_palindrome(value)
value.downcase!
# Reverse the string
reversed = ""
count = value.length
while count > 0
count -= 1
reversed += value[count]
end
# Instead of writing codes for reverse string
# we can also use reverse ruby method
# something like this value == value.reverse
if value == reversed
return "#{value} is a palindrom"
else
return "#{value} is not a palindrom"
end
end
puts "Enter a Word"
a = gets.chomp
p is_palindrome(a)
class String
def palindrome?
self.downcase == self.reverse.downcase
end
end
puts "racecar".palindrome? # true
puts "Racecar".palindrome? # true
puts "mississippi".palindrome? # false
str= gets.chomp
str_rev=""
n=1
while str.length >=n
str_rev+=str[-n]
n+=1
end
if str_rev==str
puts "YES"
else
puts "NO"
end
> first method
a= "malayalam"
if a == a.reverse
puts "a is true"
else
puts "false"
end
> second one
a= "malayalam"
a=a.split("")
i=0
ans=[]
a.count.times do
i=i+1
k=a[-(i)]
ans << k
end
if a== ans
puts "true"
else
puts "false"
end