Рубиновый способ проверки наличия палиндрома

Я хотел проверить, является ли строка палиндром или не использует ruby-код.

Я стартер в рубине, поэтому не слишком хорошо знаком с string methods в рубине

Ответ 1

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

Ответ 2

Если вы не знакомы с методами 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

Ответ 3

Рекурсивное решение показывает, как строки можно индексировать в 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, и вы получите большую часть важных методы.

Ответ 4

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)

Ответ 5

class String
  def palindrome?
    self.downcase == self.reverse.downcase
  end
end

puts "racecar".palindrome? # true
puts "Racecar".palindrome? # true 
puts "mississippi".palindrome? # false 

Ответ 6

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

Ответ 7

> 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